Set
常用实现类:
HashSet
LinkedHashSet
TreeSet
Set是无序不可重复的:无序就是不是你加入数据时的顺序,所以不能通过下标取某个元素;不可重复就是你追加进去的元素不能是相同的,元素相同时,新元素就无法加入。
Set集合的遍历方式有两种!
//方式一:通过增强for循环
for(Object obj:set){
System.out.println(set);
}
//方式二:通过迭代器
Interator it =set.iterator();
while(it.hasNext()){
Object obj=it.next();
System.out.println(obj);
}
Set集合可以指定泛型:Set set=new Hashset();
Set判断元素相同的依据是什么?
加入一个元素时,和集合中的每一个元素对比。
先调用对象的hashCode方法。
如果hash值不相同,再调用equals方法,判断两个对象的属性是否完全相同,如果返回true,则相同,返回false,则不相同。
LinkedHashSet&TreeSet
LinkedHashSet是一个具有预知迭代顺序的无序集合。
TreeSet是一个具有排序功能的,TreeSet中的元素必须排序,不排序不行。默认情况下排序的依据是对象所在的类是否实现Comparable接口(内部比较器)。
内部比较器:p1.compareTo(p2);自然排序
外部比较器:com.compare(p1,p2);定制排序
两个都用,会使用定制排序。
优先选择谁?
优先选择内部比较器。如果内部比较器不能用,再用外部比较器。
List
List是可重复的,就是List可以加入相同的元素。List通过下标取出来相应的元素,下标从0开始;删除的时候一次只能删一个,并且是从最前面开始删除。
List判断元素相同的依据是equals
Stack栈
先进后出
弹出栈顶元素,没有时出异常
Queue队列
先进先出
取出队中元素,没有为null
Map
Map键值对(Key-value)
Maps是一个接口,但它不是Collection的子接口
常用实现类:
HashMap
LinkedHashMap
TreeMap
它们什么关系?
Map的键和值都可以是任意类型Hashmap的键值对之间是无序的。
entry是map中的一个键值对。
map的遍历用增强for循环。
LinkedHashMap:键值对之间的顺序是添加时的顺序。
数组和集合的区别
1.数组的长度是固定的,集合可随意删除,增加。
2.集合只能存储引用类型;数组可以存储引用类型和基本类型。
3.集合方法比较多。