Java 集合与数据结构 · 接口 interfaces ·Collection 常用方法 · Map 常用方法
目录
- 一、Java 集合
- 二、学习 Java 集合框架有什么好处吗?
- 三、接口 interfaces
- 3.1 基本关系说明
- 3.2 Collection 常用方法说明
- 3.3 Conllection 示例
- 3.4 Map 常用方法说明
- 3.5 Map 示例
一、Java 集合
Java 集合框架 Java Collection Framework,又被称为容器 container,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes。
其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store、检索 retrieve、管理 manipulate,即平时我们俗称的增删改查 CURD。
集合,又例如:一副扑克牌(一组牌的集合)、一个邮箱(一组邮件的集合)、一个通讯录(一组姓名和电话的映射关系)等等。
类和接口总览
二、学习 Java 集合框架有什么好处吗?
- 使用成熟的集合框架,有助于我们便捷、快速的写出高效、稳定的代码。
- 学习背后的数据结构知识,有助于我们理解各个集合的优缺点以及使用场景。
三、接口 interfaces
3.1 基本关系说明
- Collection:用来存储管理一组对象 objects,这些对象一般被成为元素 elements。
- Set:元素不能重复,背后隐含着查找/搜索的语义。
- SortedSet:一组有序的不能重复的元素。
- List:线性结构。
- Queue:队列。
- Deque:双端队列。
- Map:键值对 Key-Value-Pair,背后隐含着查找/搜索的语义。
- SortedMap:一组有序的键值对。
3.2 Collection 常用方法说明
方法签名 | 说明 |
---|---|
boolean add(E e) | 将元素 e 放入集合中 |
void clear( ) | 删除集合中的所有元素 |
boolean isEmpty( ) | 判断集合是否没有任何元素,俗称空集合 |
boolean remove(Object e) | 如果元素 e 出现在集合中,删除其中一个 |
int size( ) | 返回集合中的元素个数 |
Object[ ] toArray( ) | 返回一个装有所有集合中元素的数组 |
3.3 Conllection 示例
Collection<String> list = new ArrayList<>();
System.out.println(list.size());
System.out.println(list.isEmpty());
list.add("我");
list.add("爱");
list.add("Java");
System.out.println(list.size());
System.out.println(list.isEmpty());
Object[] array = list.toArray();
System.out.println(Arrays.toString(array));
for (String s : list) {
System.out.println(s);
}
list.remove("爱");
for (String s : list) {
System.out.println(s);
}
list.clear();
System.out.println(list.size());
System.out.println(list.isEmpty());
3.4 Map 常用方法说明
方法签名 | 说明 |
---|---|
V get(Object k) | 根据指定的 k 查找对应的 v |
V getOrDefault(Object k, V defaultValue) | 根据指定的 k 查找对应的 v,没有找到就用默认值代替 |
V put(K key, V value) | 将指定的 k-v 放入 Map |
boolean containsKey(Object key) | 判断是否包含 key |
boolean containsValue(Object value) | 判断是否包含 value |
Set<Map.Entry<K, V>> entrySet() | 将所有键值对返回 |
boolean isEmpty() | 判断是否为空 |
int size() | 返回键值对的数量 |
3.5 Map 示例
Map<Integer,String> map = new HashMap<>();
map.put(001,"林逸");
map.put(002,"楚梦瑶");
map.put(003,"陈雨舒");
map.put(004,"唐韵");
Set<Map.Entry<Integer,String>> entries = map.entrySet();
for (Map.Entry<Integer,String> e : entries) {
System.out.println(e);
}
// System.out.println(map.containsKey(004));
// System.out.println(map.containsValue("陈雨舒"));
// System.out.println(map.getOrDefault(001, "ly"));
// System.out.println(map.getOrDefault(005, "天蝉"));
// System.out.println(map.get(001));
// System.out.println(map.get(004));
// System.out.println(map.size());
// System.out.println(map.isEmpty());
}
注意事项:
Set<Map.Entry<K, V>> entrySet( )
将所有键值对返回
返回将使用一个 Set<Map.Entry<K, V>> 接收,
实际是存储到了 Map.Entry<K, V> 里面。
可以直接使用 for-each 遍历
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}