java_day7

HashSet

特点:

  • 不能保证元素的排列顺序
  • 不可重复
  • HashSet不是线程安全的
  • 集合元素可以存null 当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法得到该对象的hashCode值,然后根据hashCode决定值存的地址

如果两个元素的equals()方法返回true,但他们的hashCode()返回值不相等,hashSet将会把他们存在不同的位置,但依然可以添加成功。

不可重复指的是hashCode不相同

TreeSet

特点:可以确保集合元素处于排序状态,TreeSet支持两种排序方法:自然排序和定序排序。默认情况下,TreeSet采用自然排序。

必须放入同样的数据类型

类的排序,重写comparator接口

List接口

List代表一个元素有序、且可重复的集合,集合中每个元素都有其对应的顺序索引

List允许重复元素,可以通过索引来访问指定位置的元素,默认按加入的顺序设置索引

Map

Map用于保存具有映射关系的数据,因此Map集合里面保存两组值,Key和Value,Key不允许重复,通过指定的Key能找到Value,可以想象成diy数组的下标

HashMap于Hashtable时Map接口的两个实现,区别:

  • Hashtable是一个古老的Map实现类,不建议
  • Hashtable线程安全,HashMap线程不安全
  • Hashtable不允许使用null作为key和value,但是HashMap可以。

TreeMap

TreeMap存储Key-Value时,需要根据Key对key-value进行排序,TreeMap可以保证所有的Key-Value对处于有序状态

  • 自然排序:实现Comparable接口,而且所有的Key应该是同一个类的对象,否则会抛出ClassCastException
  • 定序排序:创建TreeMap时,传入一个Comparator对象,该对象负责对TreeMap中所有的key进行排序。此时不需要Map的Key实现Comparable接口

操作集合的工具类:Collections

Collection是一个操作Set,List和Map等集合的工具类,Collection中提供了大量的方法对集合元素进行排序,查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。

  • reverse(List): 逆序
  • shuffle(List): 随机排序
  • sort(List): 根据元素的自然顺序对List进行升序排序
  • sort(List, Comparator): 根据指定的Comparator产生的顺序对List集合元素进行排序
  • swap(List, int, int): 将指定的list集合中的i处元素和j元素进行交换
  • max(List),返回集合中的最大值
  • max(对象,new 类()); 返回最大的对象,根据comparator接口判断
  • min(List),返回集合中的最小值
  • int frequency(List, elem); 返回指定集合中指定元素出现的次数
  • boolean replaceAll(List list, Object oldVal, Object newVal); 使用新值替换旧值

 

 


立志成为一名攻城狮