Set
1.1 特点:无序、对象不能重复(eqauls)
eqauls从Object继承,默认比较的内存地址
1.2 遍历
1.2.1 foreach
1.2.2 迭代器
1.3 常用实现类
HashSet
TreeSet:根据某种(规则)对里面的元素进行排序
规则1: java.lang.Comparable
规则2: java.util.ComparatorMap
4.1 特点:无序、以键值对的形式添加元素,键不能重复,值可以重复,如果键相同,值会覆盖
它没有继承Collection接口
4.2 遍历
3.2.1 先取出保存所有键的Set,再遍历Set即可
3.2.2 先取出保存所有Entry重点内容的Set,再遍历此Set即可(快速遍历Map)
set代码块
public class Set {
public static void main(String[] args) {
java.util.Set<Stu> set= new HashSet<>();
set.add(new Stu("15", "zah", 17));
set.add(new Stu("18", "hfgs", 145));
set.add(new Stu("78", "khkh", 19));
set.add(new Stu("123", "khjde", 141));
set.add(new Stu("65", "ljkh", 147));
set.add(new Stu("32", "aads", 20));
set.add(new Stu("32", "aads", 20));
System.out.println(set.size());
/**
* set不是所有的类型都是无序的Sting和integer是有序的,但是自己定义的实体类是无序的
*
* 关于set集合的排序分两点:
* 1.jdk1.7及以下HashSet是无序的,而linkedHashSet是怎么存怎么取,TreeSet有默认的排序(自然排序接口,比较器排序接口)。
* 2.jdk1.8及以上HashSet和TreeSet都是有序的。HashSet的排序方式是散列排序,TreeSet它的排序是(自然排序接口,比较器排序接口)
*
*/
list集合的优化
public class Collection2 {
//list的优化
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
ArrayList list=new ArrayList<>(50);
getLen(list);
for (int i = 0; i < 60; i++) {
list.add(i);
System.out.print(list.size()+",");
getLen(list);
}
String [] arr=new String[10];
}
//结论:初始容量为10 每次增加数组的长度为1.5倍。
//优化只需要给list一个指定的长度就行了这样可以减少扩容的时间。