目录
get(Object key) - 根据指定的键返回对应的值。如果Map中不包含该键,则返回null。
values() - 返回Map中所有值的集合。同keySet()一样,这也是一个视图。
Java集合框架概述
Java集合框架提供了一组用于存储和操作数据的类和接口,主要分为两大体系:Collection
接口体系和Map
接口体系。Collection
包括List
、Set
和Queue
,而Map
则用于存储键值对。
Set集合
Set
接口是一个不包含重复元素的集合。主要实现类有HashSet
、LinkedHashSet
和TreeSet
。这些集合没有索引,因此不能通过索引进行访问。
HashSet
HashSet
基于哈希表实现,特点是无序、元素不重复。
import java.util.HashSet;
import java.util.Set;
public class HashSetExample {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // 重复元素不会被添加
for (String item : set) {
System.out.println(item);
}
}
}
注释:HashSet
使用哈希表来存储元素,不能保证元素的顺序。添加重复元素时,不会抛出异常,只是简单地忽略它。
LinkedHashSet
LinkedHashSet
是HashSet
的子类,具有有序性,按照插入顺序保存元素。
import java.util.LinkedHashSet;
import java.util.Set;
public class LinkedHashSetExample {
public static void main(String[] args) {
Set<String> set = new LinkedHashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // 重复元素不会被添加
for (String item : set) {
System.out.println(item);
}
}
}
注释:LinkedHashSet
在维护一个双向链表的同时,使用哈希表来存储元素。可以确保迭代顺序与插入顺序一致。
TreeSet
TreeSet
基于红黑树实现,能够对元素进行排序。
import java.util.Set;
import java.util.TreeSet;
public class TreeSetExample {
public static void main(String[] args) {
Set<String> set = new TreeSet<>();
set.add("Banana");
set.add("Apple");
set.add("Cherry");
for (String item : set) {
System.out.println(item); // 输出将按字母顺序排序
}
}
}
注释:TreeSet
确保集合中的元素按照自然顺序(或者通过提供的比较器)进行排序。
Map集合
Map
接口用于存储键值对,每个键对应一个值,键不允许重复。
Map集合常用API
put(K key, V value)
- 向Map中添加键值对。如果Map已包含该键,其关联的值将被新值替换。
Map<String, Integer> stock = new HashMap<>();
stock.put("Apple", 50);
stock.put("Orange", 75);
get(Object key)
- 根据指定的键返回对应的值。如果Map中不包含该键,则返回null
。
Integer appleStock = stock.get("Apple"); // 返回50
Integer bananaStock = stock.get("Banana"); // 由于"Banana"键不存在,返回null
remove(Object key)
- 根据键移除Map中的键值对。如果键存在,则移除键值对并返回对应的值,如果键不存在,则返回