目标
- 了解什么是集合框架
- 了解学习集合框架的意义
- 掌握集合框架相关接口和常见的实现类
介绍
Java 集合框架又被称为容器 container ,是定义在 java.util 包下的一组
接口 interfaces 和其实现类 classes。
接口
Collection :用来存储管理一组对象 objects ,这些对象一般被成为元素 elements
- Set : 元素不能重复,背后隐含着查找/搜索的语义
- SortedSet : 一组有序的不能重复的元素
- List : 线性结构
- Queue : 队列
- Deque : 双端队列
- Map : 键值对 Key-Value-Pair ,背后隐含着查找/搜索的语义
- SortedMap : 一组有序的键值对
collection常用方法:
import java.util.Collection;
import java.util.ArrayList;
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
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());
}
}
Map常用方法说明
map示例:
import java.util.*;
public class kaishi1 {
public static void main(String[] args) {
Map<String,String> map=new HashMap<>();
System.out.println(map.size());
System.out.println(map.isEmpty());
System.out.println(map.get("作者"));
System.out.println(map.getOrDefault("作者", "佚名"));
System.out.println(map.containsKey("作者"));
System.out.println(map.containsValue("佚名"));
map.put("作者", "鲁迅");
map.put("标题", "狂人日记");
map.put("发表时间", "1918年");
System.out.println(map.size());
System.out.println(map.isEmpty());
System.out.println(map.get("作者"));
System.out.println(map.getOrDefault("作者", "佚名"));
System.out.println(map.containsKey("作者"));
System.out.println(map.containsValue("佚名"));
for(Map.Entry<String,String> entry:map.entrySet()){
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
}
}
实现Classes
一些关于集合的常见问题
- HashMap 了解不,介绍一下,如果一个对象为 key 时,hashCode 和 equals 方法的用法要注意什么?
-
HashSet 和 HashMap 的区别是什么?
-
HashMap 是线程安全的么?那需要线程安全需要用到什么?
该问题解答来源 -
ArrayList 和 LinkedList 的区别是什么?
ArrayList 和 LinkedList 是 List 接口的两种不同实现,并且两者都不是线程安全的。
ArrayList 内部使用的动态数组来存储元素,LinkedList 内部使用的双向链表来存储元素,这也是 ArrayList 和 LinkedList 最本质的区别。
一个比较好的回答
- 有了解过 HashMap 的具体实现么?
具体实现 - HashMap 和 ConcurrentHashMap 哪个效率更高?
答:ConcurrentHashMap;
具体:HashMap和ConcurrentHashMap比较
hashCode 主要是用来做什么用的?
hashcode主要作用