文章目录
- 集合框架及背后的数据结构
- 1.介绍
- 类和接口总览
- 2.接口 interfaces
- 2.1基本的关系解释:
- 2.2Collection 常用方法说明
- 2.3 Collection 示例
- 2.4 Map 常用方法说明
- 2.5 Map 示例
- 3.实现 classes
集合框架及背后的数据结构
1.介绍
Java 集合框架 Java Collection Framework, 又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其他类 classes .
类和接口总览
2.接口 interfaces
2.1基本的关系解释:
- Collection :用来存储管理一组对象 objects ,这些对象一般被成为元素elements
- Set : 元素不能重复,背后隐含着查找/搜索的语义
- SortedSet : 一组有序的不能重复的元素
- List : 线性结构
- Queue : 队列
- Deque : 双端队列
- Map : 键值对 Key-Value-Pair ,背后隐含着查找/搜索的语义
- SortedMap : 一组有序的键值对.
2.2Collection 常用方法说明
方法签名 | 说明 |
boolean add(E e) | 将元素 e 放入集合中 |
void clear() | 删除集合中的所有元素 |
boolean isEmpty() | 判断集合是否没有任何元素,俗称空集合 |
boolean remove(Object e) | 如果元素 e 出现在集合中,删除其中一个 |
int size() | 返回集合中的元素个数 |
Object[] toArray() | 返回一个装有所有集合中元素的数组 |
2.3 Collection 示例
代码实现:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class Test {
public static void main(String[] args) {
System.out.println("=======将元素 e 放入集合中=============");
Collection<String> collection = new ArrayList<>();
collection.add("hello");
collection.add(" world");
System.out.println(collection);
Collection<Integer> collection1 = new ArrayList<>();
collection1.add(1);
collection1.add(2);
collection1.add(3);
System.out.println(collection1);
System.out.println("=======删除集合中的所有元素=============");
collection.clear();
System.out.println(collection);
System.out.println("====判断集合是否没有任何元素,俗称空集合===");
System.out.println(collection.isEmpty());
System.out.println("====返回一个装有所有集合中元素的数组======");
Object[] objects = collection1.toArray();
System.out.println(Arrays.toString(objects));
System.out.println("=======返回集合中的元素个数=============");
System.out.println(collection1.size());
System.out.println("====如果元素e出现在集合中删除其中一个=====");
System.out.println(collection1.remove(2));
System.out.println(collection1);
}
}
运行结果:
2.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() | 返回键值对的数量 |
2.5 Map 示例
代码实现
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class Test2 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("国民男神","博哥");
map.put("中国","牛逼");
String ret = map.get("国民男神");
System.out.println(ret);
String ret1 = map.getOrDefault("123","456");
System.out.println(ret1);
System.out.println(map.containsKey("国民男神"));
System.out.println(map.containsValue("博哥"));
Set<Map.Entry<String,String>> set = map.entrySet();
for(Map.Entry<String,String> entry : set){
System.out.println("key: "+entry.getKey()+" value: "+entry.getValue());
}
System.out.println("=============================================");
Map<String,String> map1 = new TreeMap<>();
map1.put("国民男神","博哥");
map1.put("中国","牛逼");
String ret2 = map1.get("国民男神");
System.out.println(ret2);
String ret3 = map1.getOrDefault("123","456");
System.out.println(ret3);
System.out.println(map1.containsKey("国民男神"));
System.out.println(map1.containsValue("博哥"));
Set<Map.Entry<String,String>> set1= map.entrySet();
for(Map.Entry<String,String> entry1 : set1){
System.out.println("key: "+entry1.getKey()+" value: "+entry1.getValue());
}
}
}
运行结果:
3.实现 classes
interface | 顺序表 | 链表 | 堆 | 红黑树 | 哈希表 |
Set | TreeSet | HashSet | |||
List | ArrayList | LinkedList | |||
Queue | LinkedList | PriorityQueue | |||
Deque | LinkedList | ||||
Map | TreeMap | HashMap |