JavaSE-集合框架
大约 4 分钟
2.1 Collection 常用方法
方法名 | 说明 |
---|---|
boolean add(E e) | 添加元素 |
boolean remove(Object o) | 从集合中移除指定的元素 |
void clear() | 清除集合中的元素 |
boolean contains(Object o) | 判断集合中是否存在指定的元素 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度 |
Iterator:迭代器,集合的专用遍历方式
- Iterator< E > iterator():返回此集合中的迭代器,通过集合的iterator()方法得到
- 迭代器通过集合的iterator()方法得到,所以他是依赖于集合而存在的
Iterator中的常用方法
- E next();返回迭代中的下一个元素
- boolean hasNext():如果迭代具有更多的元素,则返回true
Collection<String> c = new ArrayList<>();
c.add("111");
c.add("222");
c.add("333");
Iterator<String> iterator = c.iterator();
if (iterator.hasNext()){
String str = iterator.next();
System.out.println(str);
}
2.2 List集合
List集合概述
- 有序集合(序列),用户可以精准的控制列表中每一个元素插入的位置,可通过整数索引访问元素,并搜索元素
- 与Set集合不同,列表通常允许重复的元素
List集合特点
- 有序:存储和取出的元素顺序一致
- 可重复:存储的元素可以重复
List集合特有方法
方法名 | 说明 |
---|---|
void add(int index,E element) | 在此集合中的指定位置插入指定元素 |
E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
E get(int index) | 返回指定索引处的元素 |
List集合子类特点
list集合常用子类:ArrayList,LinkedList
ArrayList:底层数据结构是数组,查询快,增删慢
LinkedList:底层数据结构是链表,查询慢,增删块
LinkedList集合的特有功能
方法名 | 说明 |
---|---|
public void addFirst(E e) | 在该列表开头插入指定的元素 |
public void addLast(E e) | 将指定的元素追加到此列表的末尾 |
public E getFirst() | 返回此列表中的第一个元素 |
public E getLast() | 返回此列表中的最后一个元素 |
public E removeFirst() | 从此列表中删除并返回第一个元素 |
public E removeLast() | 从此列表中删除并返回最后一个元素 |
2.3 Set集合
set集合特点
- 不包含重复元素
- 没有带索引的方法,所以不能使用普通for循环
HashSet集合特点
- 底层数据结构是哈希表
- 对集合的迭代顺序不作保证,存入和取出的元素顺序不一定一致
- 没有带索引的方法,不能用普通for循环遍历
- 由于是Set集合,故不包含重复元素
LinkedHashSet集合特点
- 哈希表和链表实现的Set接口,具有可预测的迭代顺序
- 由链表保证元素有序,也就是说元素的存入和取出顺序一致
- 由哈希表保证元素唯一,无重复元素
TreeSet集合特点
- 元素有序,但是是按照一定的规则进行排序,具体排序方式取决于构造方法
TreeSet():根据其元素的自然排序进行排序
TreeSet(Comparator comparator):根据制定的比较器进行排序
comparable接口
- 无带索引的方法,不能使用普通for循环遍历
- 由于是Set集合,不包含重复元素
2.4 Map集合
Map集合概述
- Interface Map< K,V > K:键的类型; V:值类型
- 将键映射到值的对象;不能包含重复的键,每个键可以映射到最多一个值
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() | 获取所有键值对对象的集合 |
Map集合的遍历方式
Map<String,String> map = new HashMap<String,String>();
map.put("000","0000");
map.put("111","1111");
map.put("222","2222");
// 方法一
Set<String> keySet = map.keySet();
for (String key : keySet){
String value = map.get(key);
System.out.println(key+", "+value);
}
// 方法二
Set<Map.Entry<String,String>> entrySet = map.entrySet();
for (Map.Entry<String,String> me : entrySet){
String key = me.getKey();
String value = me.getValue();
System.out.println(key+", "+value);
}
2.5 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):使用默认的随机源随机排列指定的列表