5.25
目录
集合
Collection集合的遍历
Iterator:迭代器,集合专用的遍历方式
Iterator<E> iterator():返回此集合元素的迭代器,通过集合的iterator()方法得到
Iterator中常用的方法
E next():返回迭代的下一个元素
boolean hasNext():如果迭代具有元素更多元素,则返回true
List集合
概述
-
有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素
-
与Set集合不同,列表通常允许重复的元素
集合特点
-
有序:存储和取出的元素顺序一样
-
可重复:存储的元素可以重复
特有方法
方法名 | 说明 |
---|---|
void add(int index,E element) | 在此集合中指定位置插入 |
E remove(int index) | 删除指定索引的元素,返回被删除的元素 |
E set(int index,E element) | 修改指定索引的元素,返回被修改的元素 |
E get(int index) | 返回指定索引的元素 |
集合子类
ArrayList
底层数据结构是数组,查询快,增删慢
常用方法
方法名 | 说明 |
---|---|
public boolean remove(Object o) | 删除指定元素,返回是否删除成功 |
public E remove(int index) | 删除指定索引的元素,返回被删除的元素 |
public E set(int index,E element) | 修改指定索引的元素,返回被修改的元素 |
public E get(int index) | 返回指定索引的元素 |
public int size() | 返回集合中的元素个数 |
LinkedList
底层数据结构是链表,查询慢,增删快
Set集合
集合特点
-
不包含重复元素的集合
-
没有带索引的方法,所以不能使用普通的for循环遍历
集合子类
HashSet
-
底层数据结构是哈希表
-
对集合的迭代顺序不作任何保证,也就是说不能保证存储的顺序和取出的顺序一致
-
没有带索引的方法,所以不能使用普通for循环遍历
-
由于是Set集合,不能包含重复元素
LinkedHashSet
-
哈希表和链表实现的Set接口,具有可预测的迭代次序
-
由链表保证元素有序,也就是说元素的存储和取出顺序是一致的
-
由哈希表保证元素唯一
TreeSet
-
元素有序,按照一定规则进行排序,具体规则取决于构造方法
TreeSet(): 根据其元素的自然排序进行排列
TreeSet(Comparator comparator): 根据指定的比较器进行比较
-
没有带索引的方法,所以不能使用普通for循环遍历
-
由于Set集合,保证元素的唯一性
Map集合
Map集合的基本功能
方法名 | 说明 |
---|---|
V put(K key,V value) | 添加元素 |
V remove(Object key) | 根据键删除键值对元素 |
void clear() | 移除所有的键值对元素 |
boolean containsKey(Object key) | 判断集合是否包含指定的键 |
boolean containsValue(Object value) | 判断集合中是否包含指定的值 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度 |
Map集合的获取功能
方法名 | 说明 |
---|---|
V get(Object key) | 根据键获取值 |
Set<K>keySet() | 获取所有键的集合 |
Collection<V>values() | 获取所有值的集合 |
Set<Map.Entry<K,V>>entrySet() | 获取所有键值对对象的集合 |
Collections
Collections类的概述
是针对集合操作的工具类
Collections类的常用方法
public static<T extends Comparable<? super T>>void sort(List<T>list):将指定的列表按升序排序
public static void reverse(List<?> list):反转指定列表中元素的顺序
public static void shuffle(List<?>list): 使用默认的随机源随机排列指定的列表
遍历集合
List集合
普通for循环
for (int i=0;i<list.size();i++){
String s = list.get(i);
System.out.println(s);
}
String类型可替换
增强for循环
for (String s : list){
System.out.println(s);
}
String类型可替换
迭代器
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
String next = iterator.next();
System.out.println(next);
}
String类型可替换
Set集合
增强for循环
for (String ss : s){
System.out.println(ss);
}
String类型可替换
迭代器
Iterator<String> iterator = s.iterator();
while (iterator.hasNext()){
String next = iterator.next();
System.out.println(next);
}
String类型可替换
Map集合
方式一:获取键找对应的值
Set<String> strings = map.keySet();
for (String s : strings){
String s1 = map.get(s);
System.out.println(s + "," + s1);
}
String类型可替换
方式二:获取键值对元素
Set<Map.Entry<String, String>> entries = map.entrySet();
for (Map.Entry<String, String> m : entries){
String key = m.getKey();
String value = m.getValue();
System.out.println(key + "," + value);
}
String类型可替换