1.Set
HashSet如何保证元素的唯一性?
是通过元素的两个方法:hashCode()和equals()
如果元素的HashCode值相同,才会判断equals()是否为true
如果元素的HashCode值不同,才会调用equals()
对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode()和equals()方法
先判断hashCode(),如果相等,再通过equals()判断
ArrayList只依赖equals()
2.TreeSet()存储自定义对象
可以对Set集合中的元素进行排序,
排序的第一种方式:
元素必须实现Comparable接口,并覆写compareTo方法
底层数据结构是二叉树
保证元素唯一性的依据:
compareTo方法return 0.
排序的第二种方式:
当元素自身不具备比较性时,或者,具备的比较性不是所需要的,这时就需要让集合自身具备比较性。
将比较器作为参数传递给TreeSet的构造器。
实现Comparator类,覆盖compare方法
当两种排序方式都存在时,以比较器为主
3.Collections
工具类,里面的方法都是静态方法,用于操作集合
Collections.sort(List<T> list)
Collections.sort(List<T> list,Comparator comparator)
Collections.max(List list)
Collections.binarySearch(List<T> list)
Collections.fill(List<T> list, T t);
Collections.replaceAll(List<T> list, T ori ,T new)
Collections.reverseOrder(Comparator cmp):比较器反转
Collections.reverseOrder():比较器反转
Collections.swap(List<T> list, int index1, int index2):元素替换
Collections.shuffle(List <T> list):随机排列元集合中的元素
4.Arrays 用于操作数组的工具类
copyOfRange(byte[] original,int from, int to)
Arrays.toString(int [] nums)
Arrays.asList(int [] arr):将数组变成list集合
将数组变成集合,不可以使用集合的增删方法,因为数组的长度是固定的
如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素
如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在
集合转成数组
String [] arr=list.toArray(new String[5]);
集合变数组是为了限定对元素的操作
可变参数一定要定义在参数列表的最后面