
1 根接口Collection 和 MapCollection所有单列集合如 List、Set、Queue的根接口。Map双列集合键值对的根接口。2 Collection 接口常用方法List / Set / Queue 通用方法说明boolean add(E e)添加元素boolean remove(Object o)移除指定元素boolean contains(Object o)是否包含该元素int size()元素个数boolean isEmpty()是否为空void clear()清空IteratorE iterator()获取迭代器default void forEach(Consumer? super E action)遍历每个元素default boolean removeIf(Predicate? super E filter)批量删除满足条件的元素Object[] toArray()转为数组T T[] toArray(T[] a)转为指定类型数组示例ListStringlistnewArrayList();list.add(A);list.remove(A);list.forEach(System.out::println);list.removeIf(s-s.length()1);3 List接口有序、可重复、有索引方法说明E get(int index)获取指定索引元素E set(int index, E element)替换并返回旧值void add(int index, E element)在指定位置插入E remove(int index)移除并返回该位置元素int indexOf(Object o)第一次出现的索引int lastIndexOf(Object o)最后一次出现的索引ListE subList(int from, int to)返回子列表视图常用实现类ArrayList随机访问快、LinkedList增删快也实现Deque示例ListIntegerlistnewArrayList(Arrays.asList(10,20,30));list.add(1,15);// [10, 15, 20, 30]list.set(2,25);// [10, 15, 25, 30]ListIntegersublist.subList(1,3);// [15, 25]4 Set接口无重复元素无特有方法完全继承Collection。常用实现类HashSet– 无序允许 nullLinkedHashSet– 维护插入顺序TreeSet– 自动排序需 Comparable 或 Comparator示例SetStringsetnewHashSet();set.add(Apple);set.add(Apple);// 忽略返回 falseSystem.out.println(set.size());// 1// TreeSet 排序SetIntegersortednewTreeSet(Arrays.asList(5,1,3));System.out.println(sorted);// [1, 3, 5]5 Map接口键值对方法说明V put(K key, V value)添加键值对返回旧值V get(Object key)根据键获取值V remove(Object key)移除键返回对应值boolean containsKey(Object key)是否包含该键boolean containsValue(Object value)是否包含该值int size()键值对数量SetK keySet()所有键的 Set 视图CollectionV values()所有值的 Collection 视图SetMap.EntryK,V entrySet()所有键值对的 Set 视图default void forEach(BiConsumer? super K, ? super V action)遍历键值对default V getOrDefault(Object key, V defaultValue)键不存在返回默认值default V putIfAbsent(K key, V value)仅当键不存在或为 null 时放入default V computeIfAbsent(K key, Function? super K, ? extends V mappingFunction)键不存在时计算并放入default V merge(K key, V value, BiFunction? super V,? super V,? extends V remappingFunction)合并值常用实现类HashMap– 无序允许 null 键和值LinkedHashMap– 维护插入顺序TreeMap– 按键排序示例MapString,IntegermapnewHashMap();map.put(Alice,30);map.put(Bob,25);map.forEach((k,v)-System.out.println(k: v));Integeragemap.getOrDefault(Charlie,0);// 0map.computeIfAbsent(David,k-40);// 插入 David406 Deque额外方法双端操作操作端抛出异常方法返回特殊值方法查看不移除队首addFirst(e)offerFirst(e)getFirst()/peekFirst()队首移除removeFirst()pollFirst()-队尾addLast(e)offerLast(e)getLast()/peekLast()队尾移除removeLast()pollLast()-常用实现类ArrayDeque– 数组实现效率高推荐作为栈/队列使用LinkedList– 也实现了Deque接口示例QueueStringqueuenewArrayDeque();queue.offer(A);queue.offer(B);Stringheadqueue.poll();// AStringpeekqueue.peek();// B// 作为栈使用DequeDequeStringstacknewArrayDeque();stack.push(first);stack.push(second);Stringtopstack.pop();// second7 工具类Collections和Arrays方法描述Collections.sort(ListT list)升序排序要求元素实现ComparableCollections.sort(ListT list, Comparator? super T c)按自定义比较器排序Collections.reverse(List? list)反转顺序Collections.binarySearch(List? extends Comparable? super T list, T key)二分查找需已排序Collections.shuffle(List? list)随机打乱Collections.synchronizedList/Set/Map返回线程安全的包装类Collections.unmodifiableList/Set/Map返回只读视图Collections.addAll(Collection? super T c, T... elements)批量添加Arrays.asList(T... a)将数组转为固定大小的List视图Arrays.sort(T[] a)对数组排序Arrays.copyOf(T[] original, int newLength)数组拷贝示例ListIntegerlistnewArrayList(Arrays.asList(3,1,4,1,5));Collections.sort(list);// [1, 1, 3, 4, 5]Collections.reverse(list);// [5, 4, 3, 1, 1]intindexCollections.binarySearch(list,3);// 2已排序后// 数组转 List注意返回的 List 不可增删长度但可修改元素String[]arr{a,b};ListStringlistFromArrArrays.asList(arr);listFromArr.set(0,x);// 修改 arr[0] 同时改变8 Java 8 新增的集合增强 API方法说明Collection.removeIf(Predicate filter)批量删除满足条件的元素Map.computeIfAbsent/computeIfPresent键存在/不存在时计算并更新值Map.forEach遍历键值对List.replaceAll(UnaryOperatorE operator)替换所有元素List.sort(Comparator? super E c)列表排序替代Collections.sort示例list.replaceAll(x-x*2);// 每个元素翻倍list.sort(Comparator.naturalOrder());// 自然排序map.computeIfAbsent(newKey,k-100);// 若 key 不存在则放入 100map.merge(count,1,Integer::sum);// 若 key 存在则累加否则放入 1