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]);

集合变数组是为了限定对元素的操作

 

可变参数一定要定义在参数列表的最后面

 

posted on 2018-04-06 21:57  sonofthesea  阅读(109)  评论(0编辑  收藏  举报