Collection集合的遍历:
- 用迭代器进行遍历iterator: next() hasnext()
Iterator<String> it=c.iterator();
- 迭代器并没有add方法,并不能在遍历时进行集合的添加数据操作。
- ListIterator是有add方法的,可以在遍历的同时进行集合的修改操作。
Iterator it=c.listIterator();
增强for循环
格式:
for(元素数据类型变量名:数组或Collection集合){
该变量就是元素.
}
int[] arr={1,2,3,4};
for(int i:arr){
System.out.println(i)
}
List子类:ArrayList LinkList
- ArrayList:底层是数组,查询快,修改慢
- LinkList:底层是链表,查询慢,修改快
Set:
- 迭代器和增强for两种遍历方式。
哈希值:
-
hasHCode() 返回哈希值。
-
同一个对象多次调用HasHCode,返回的哈希值相同
-
默认不同对象哈希值不同。而重写方法后可以实现不同对象哈希值相同。
HashSet:
- 底层为哈希表。
- 对迭代顺序不保证,因为哈希表并不是顺序存储。
- 不能使用普通for循环遍历,所以使用增强for。
- 当用于存储对象时,需要重写equals和hashCode方法
LinkedHashSet:
- 哈希表和链表实现的Set接口,具有可预测的迭代次序。
- 由链表保证元素有序,即存取顺序一致。
TreeSet:
- 元素有序 TreeSet():自然排序 TreeSet(Comparator comparator) :指定比较器排序
- 不能使用普通for遍历
- Set集合,不含重复
存储对象时必须实现Comparator<类> 接口,并且重写ComparatorTo(对象)方法或者指定比较器。
public int ComparaTo(Student s){
//return 0 不存储
//return 1 升序存储
//return -1 降序存储
}
Map
- K,V
- 实例化用HashMap
- 当键重复时,值会替代之前的值
- .put() 添加元素
- clear() 清空
- Set keySet()获取所有键
- Collectionvalues()获取所有值
- Set<Map.Entry<k,V>> entry() 获取所有键值对
- 遍历方法1:获取键,按键获取值
- 遍历方法2:获取键值对