Java集合框架
java集合框架:Java collection framework,又称为容器,是定义在java.util包下的一组接口interface和其实现类classes。
Java 集合框架的优点及作用:
- 使用成熟的集合框架,有助于我们便捷、快速的写出高效、稳定的代码
- 学习背后的数据结构知识,有助于我们理解各个集合的优缺点及使用场景
数据结构:
1.线性结构(顺序结构,链式结构)
2.树形结构:例如二叉树,一对多
3.图形结构:多对多
interface接口
1.collection:用来存储管理一组对象objects,这些对象一般被称为元素
- Set : 元素不能重复,背后隐含着查找/搜索的语义
- SortedSet : 一组有序的不能重复的元素
- List : 线性结构
- Queue : 队列
- Deque : 双端队列
collection接口常用方法:
方法签名 | 说明 |
---|---|
boolean add(E e) | 将元素e放入集合中 |
void clear() | 删除集合中的所有元素 |
boolean isEmpty() | 判断集合是否没有任何元素,俗称空集合 |
boolean remove(object e) | 如果元素e出现在集合中,删除其中一个 |
int size() | 返回集合中元素的个数 |
object[] toArray() | 返回一个装有所有集合中元素的数组 |
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
System.out.println(c.isEmpty());
c.add("C 语言");
c.add("Java SE");
c.add("数据结构");
System.out.println(c.size());
System.out.println(c.isEmpty());
System.out.println(c);
c.remove("数据结构");
System.out.println(c);
}
运行结果:
true
3
false
[C 语言, Java SE, 数据结构]
[C 语言, Java SE]
2.Map : 键值对 Key-Value-Pair ,背后隐含着查找/搜索的语义
- SortedMap : 一组有序的键值对
树形结构:二叉树
哈希结构:哈希
方法签名 | 说明 |
---|---|
V get(obje k) | 根据指定的K查找对应的v |
V getordefault(obje k,v defaultvalue) | 根据指定的K查找对应的v,没有找到用默认值代替 |
V put(k key ,v value) | 将指定的k-v放入Map |
boolean containskey(object key) | 判断是否包含key |
boolean containsvalue(object value) | 判断是否包含value |
boolean isEmpty() | 判断是否为空 |
int size() | 返回集合中元素的个数 |
public static void main(String[] args) {
Map<String, String> m = new HashMap<>();
m.put("apple", "苹果");
m.put("orange", "橘子");
m.put("banana", "香蕉");
System.out.println(m.size());
System.out.println(m.get("orange"));
String str1 = m.getOrDefault("apple", "苹果果");
String str2 = m.getOrDefault("pear", "梨");
System.out.println(str1);
System.out.println(str2);
System.out.println(m.containsKey("pear"));
System.out.println(m.containsKey("orange"));
System.out.println(m.containsValue("梨"));
System.out.println(m.containsValue("橘子"));
for(Map.Entry<String, String> e : m.entrySet())
{
System.out.println(e.getKey() + "--->" + e.getValue());
}
m.clear();
System.out.println(m.size());
}
运行结果:
3
橘子
苹果
梨
false
true
false
true
orange--->橘子
banana--->香蕉
apple--->苹果
0
实现类classes
interface | 顺序表 | 链表 | 堆 | 红黑数 | 哈希表 |
---|---|---|---|---|---|
Set | TreeSet | HashSet | |||
List | ArrayList | LinkedList | |||
Queue | LinkedList | PriorityQueue | |||
Deque | LinkedList | ||||
Map | TreeMap | HashMap |