一、ArrayList
ArrayList
是一个动态数组,允许快速随机访问元素。
add(E element)
:将指定的元素添加到列表的末尾。
ArrayList<String> list = new ArrayList<>();
list.add("item");
add(int index, E element)
:在指定位置插入元素。
list.add(2, "newItem");
get(int index)
:返回指定索引处的元素。
String item = list.get(0);
remove(int index)
:移除指定索引处的元素。
list.remove(1);
remove(Object o)
:移除指定的元素(如果存在)。
list.remove("itemToRemove");
size()
:返回列表中的元素个数。
int size = list.size();
set(int index, E element)
:将指定索引处的元素替换为新元素。
list.set(0, "replacedItem");
indexOf(Object o)
:返回指定元素在列表中第一次出现的索引,如果不存在则返回 -1。
int index = list.indexOf("searchItem");
lastIndexOf(Object o)
:返回指定元素在列表中最后一次出现的索引,如果不存在则返回 -1。
int lastIndex = list.lastIndexOf("searchItem");
isEmpty()
:检查列表是否为空。
boolean empty = list.isEmpty();
subList(int fromIndex, int toIndex)
:返回指定范围内的子列表。
List<String> subList = list.subList(1, 3);
二、LinkedList
LinkedList
实现了List
接口,同时还具有队列和栈的操作方法。
addFirst(E e)
:在列表开头添加元素。
LinkedList<String> list = new LinkedList<>();
list.addFirst("firstItem");
addLast(E e)
:在列表末尾添加元素(与add(E element)
类似)。
list.addLast("lastItem");
getFirst()
:获取列表的第一个元素。
Object first = list.getFirst();
getLast()
:获取列表的最后一个元素。
Object last = list.getLast();
removeFirst()
:移除并返回列表的第一个元素。
Object removedFirst = list.removeFirst();
removeLast()
:移除并返回列表的最后一个元素。
Object removedLast = list.removeLast();
offer(E e)
:在列表末尾添加元素(与add(E element)
类似,通常用于队列操作)。
list.offer("newElement");
poll()
:移除并返回列表的第一个元素,如果列表为空则返回null
(通常用于队列操作)。
Object polled = list.poll();
push(E e)
:将元素推入列表的头部(通常用于栈操作)。
list.push("stackElement");
pop()
:移除并返回列表的头部元素(通常用于栈操作)。
Object popped = list.pop();
三、HashSet
HashSet
是基于哈希表实现的集合,不允许重复元素。
add(E e)
:添加元素到集合中,如果元素已存在则不会添加。
HashSet<String> set = new HashSet<>();
set.add("element");
remove(Object o)
:从集合中移除指定元素。
set.remove("elementToRemove");
contains(Object o)
:检查集合中是否包含指定元素。
boolean contains = set.contains("element");
size()
:返回集合中的元素个数。
int size = set.size();
isEmpty()
:检查集合是否为空。
boolean empty = set.isEmpty();
clear()
:清空集合中的所有元素。
set.clear();
iterator()
:返回一个用于遍历集合的迭代器。
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
}
四、HashMap
HashMap
是基于哈希表实现的键值对映射。
put(K key, V value)
:添加或更新键值对。
HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 5);
get(Object key)
:根据键获取对应的值。
Integer value = map.get("apple");
remove(Object key)
:根据键删除键值对。
map.remove("apple");
containsKey(Object key)
:检查是否包含指定的键。
boolean hasKey = map.containsKey("banana");
containsValue(Object value)
:检查是否包含指定的值。
boolean hasValue = map.containsValue(3);
size()
:获取键值对的数量。
int size = map.size();
isEmpty()
:判断HashMap
是否为空。
boolean empty = map.isEmpty();
clear()
:清空所有键值对。
map.clear();
keySet()
:获取所有键的Set
集合。
for (String key : map.keySet()) {
//...
}
values()
:获取所有值的Collection
集合。
for (Integer value : map.values()) {
//...
}
putAll(Map<? extends K,? extends V> m)
:将指定Map
中的所有键值对添加到当前HashMap
中。
HashMap<String, Integer> map1 = new HashMap<>();
map1.put("a", 1);
HashMap<String, Integer> map2 = new HashMap<>();
map2.putAll(map1);
replace(K key, V oldValue, V newValue)
:仅当指定键对应的值为oldValue
时,才将其替换为newValue
。
map.replace("a", 1, 2);
compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
:对指定键的值进行重新计算,如果键不存在则可以添加新的键值对。
map.compute("a", (k, v) -> v == null? 1 : v + 1);
computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
:如果指定键不存在或者对应的值为null
,则使用给定的函数计算新的值并添加到HashMap
中。
map.computeIfAbsent("b", k -> 3);
computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)
:如果指定键存在,则使用给定的函数重新计算其值。
map.computeIfPresent("a", (k, v) -> v * 2);
merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
:如果键不存在,则将键值对添加到HashMap
;如果键存在,则使用给定的函数对旧值和新值进行合并。
map.merge("c", 4, (oldVal, newVal) -> oldVal + newVal);
entrySet()
:返回HashMap
中包含所有键值对的Set<Map.Entry<K, V>>
集合,可用于遍历。
for (Map.Entry<String, Integer> entry : map.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
}
五、TreeSet
TreeSet
是基于红黑树实现的有序集合。
add(E e)
:添加元素到集合中,会按照元素的自然顺序(如果元素实现了Comparable
接口)或指定的比较器顺序(如果构造TreeSet
时传入了Comparator
)进行排序。
TreeSet<Integer> treeSet = new TreeSet<>();
treeSet.add(5);
remove(Object o)
:从集合中移除指定的元素。
treeSet.remove(5);
contains(Object o)
:检查集合中是否包含指定的元素。
boolean contains = treeSet.contains(3);
first()
:返回集合中的第一个元素。
Integer first = treeSet.first();
last()
:返回集合中的最后一个元素。
Integer last = treeSet.last();
lower(E e)
:返回集合中严格小于指定元素的最大元素。
Integer lower = treeSet.lower(7);
higher(E e)
:返回集合中严格大于指定元素的最小元素。
Integer higher = treeSet.higher(4);
pollFirst()
:移除并返回集合中的第一个元素,如果集合为空则返回null
。
Integer firstRemoved = treeSet.pollFirst();
pollLast()
:移除并返回集合中的最后一个元素,如果集合为空则返回null
。
Integer lastRemoved = treeSet.pollLast();
clear()
:清空集合中的所有元素。
treeSet.clear();
size()
:返回集合中的元素个数。
int size = treeSet.size();
descendingSet()
:返回一个反向的Set
视图,用于反向遍历。
TreeSet<Integer> descending = (TreeSet<Integer>) treeSet.descendingSet();
subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
:返回指定范围内的子集合。
TreeSet<Integer> subSet = (TreeSet<Integer>) treeSet.subSet(3, true, 7, false);
headSet(E toElement, boolean inclusive)
:返回小于(或等于,如果inclusive
为true
)指定元素的子集合。
TreeSet<Integer> headSet = (TreeSet<Integer>) treeSet.headSet(6, true);
tailSet(E fromElement, boolean inclusive)
:返回大于(或等于,如果inclusive
为true
)指定元素的子集合。
TreeSet<Integer> tailSet = (TreeSet<Integer>) treeSet.tailSet(4, false);
**六、TreeMap **
是基于红黑树实现的有序映射(键值对存储),它根据键的自然顺序或者自定义的比较器顺序来对键进行排序。
put(K key, V value)
:添加或更新键值对。
TreeMap<String, Integer> treeMap = new TreeMap<>();
treeMap.put("apple", 5);
get(Object key)
:根据键获取对应的值。
Integer value = treeMap.get("apple");
remove(Object key)
:根据键删除键值对。
treeMap.remove("apple");
firstKey()
:获取TreeMap
中的第一个键。
String firstKey = treeMap.firstKey();
lastKey()
:获取TreeMap
中的最后一个键。
String lastKey = treeMap.lastKey();
lowerKey(K key)
:获取严格小于指定键的最大键。
String lower = treeMap.lowerKey("banana");
higherKey(K key)
:获取严格大于指定键的最小键。
String higher = treeMap.higherKey("banana");
floorKey(K key)
:获取小于等于指定键的最大键。
String floor = treeMap.floorKey("banana");
ceilingKey(K key)
:获取大于等于指定键的最小键。
String ceiling = treeMap.ceilingKey("banana");
keySet()
:获取TreeMap
中所有键的Set
视图。
for (String key : treeMap.keySet()) {
// 操作键
}
values()
:获取TreeMap
中所有值的Collection
视图。
for (Integer value : treeMap.values()) {
// 操作值
}
entrySet()
:获取包含所有键值对的Set<Map.Entry<K, V>>
视图,用于遍历。
for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {
String key = entry.getKey();
Integer val = entry.getValue();
}
pollFirstEntry()
:移除并返回TreeMap
中的第一个键值对,如果为空则返回null
。
Map.Entry<String, Integer> firstEntry = treeMap.pollFirstEntry();
pollLastEntry()
:移除并返回TreeMap
中的最后一个键值对,如果为空则返回null
。
Map.Entry<String, Integer> lastEntry = treeMap.pollLastEntry();
clear()
:清空TreeMap
中的所有键值对。
treeMap.clear();
size()
:获取TreeMap
中键值对的数量。
int size = treeMap.size();
isEmpty()
:检查TreeMap
是否为空。
boolean empty = treeMap.isEmpty();
putAll(Map<? extends K,? extends V> m)
:将另一个Map
中的所有键值对添加到当前TreeMap
中。
TreeMap<String, Integer> map1 = new TreeMap<>();
map1.putAll(treeMap);
replace(K key, V value)
:将指定键对应的旧值替换为新值。
treeMap.replace("apple", 10);
replace(K key, V oldValue, V newValue)
:仅当指定键对应的值为oldValue
时,才将其替换为newValue
。
treeMap.replace("apple", 5, 8);
七、初始化方法
一、ArrayList
- 初始化方法:
ArrayList<String> list = new ArrayList<>();
:创建一个空的ArrayList
。ArrayList<String> list = new ArrayList<>(10);
:创建一个初始容量为 10 的空ArrayList
。
- 直接赋值或添加多值:
ArrayList<String> list = new ArrayList<>(Arrays.asList("item1", "item2", "item3"));
:通过Arrays.asList
方法初始化并添加多个元素。
二、LinkedList
- 初始化方法:
LinkedList<String> list = new LinkedList<>();
:创建一个空的LinkedList
。
- 直接赋值或添加多值:
LinkedList<String> list = new LinkedList<>(Arrays.asList("item1", "item2", "item3"));
:利用Arrays.asList
初始化并添加多个元素。
三、HashSet
- 初始化方法:
HashSet<String> set = new HashSet<>();
:创建一个空的HashSet
。
- 直接赋值或添加多值:
HashSet<String> set = new HashSet<>(Arrays.asList("item1", "item2", "item3"));
:通过Arrays.asList
转换为Set
。
四、HashMap
- 初始化方法:
HashMap<String, Integer> map = new HashMap<>();
:创建一个空的HashMap
。
- 直接赋值或添加多值:
HashMap<String, Integer> map = new HashMap<>() {{ put("apple", 5); put("banana", 3); }};
:使用匿名内部类的方式初始化并添加键值对。
五、TreeSet
- 初始化方法:
TreeSet<String> treeSet = new TreeSet<>();
:创建一个空的TreeSet
(按自然顺序排序)。TreeSet<String> treeSet = new TreeSet<>(Comparator.comparing(String::length));
:创建一个按指定比较器排序的TreeSet
,这里按字符串长度比较。
- 直接赋值或添加多值:
- 可以通过循环逐个添加元素,没有像
Arrays.asList
那样直接的多值添加方法,但可以如下方式初始化:
TreeSet<String> treeSet = new TreeSet<>() {{
add("item1");
add("item2");
add("item3");
}};
六、TreeMap
- 初始化方法:
TreeMap<String, Integer> treeMap = new TreeMap<>();
:创建一个空的TreeMap
(按键的自然顺序排序)。TreeMap<String, Integer> treeMap = new TreeMap<>(Comparator.comparingInt(String::length));
:创建一个按指定比较器排序的TreeMap
,这里按字符串长度比较。
- 直接赋值或添加多值:
TreeMap<String, Integer> treeMap = new TreeMap<>() {{ put("apple", 5); put("banana", 3); }};
:使用匿名内部类的方式初始化并添加键值对。