java笔记第十二章集合

Java 集合框架是一个用来存储和操作一组数据的结构化框架。Java 提供了一个称为 Collection Framework 的库,它包括接口和类,用于在程序中处理集合。集合框架提供了很多数据结构(如列表、集合和映射)和算法(如排序和搜索)。

1. 集合框架概述

集合框架由三部分组成:

  • 接口:表示集合的抽象数据类型,如 List、Set、Map 等。
  • 实现:具体实现接口的类,如 ArrayList、HashSet、HashMap 等。
  • 算法:定义在集合上的操作方法,如排序和搜索。

2. Collection 接口

Collection 接口是所有集合类的根接口。它提供了基本的操作方法,如添加、删除和遍历元素。

常用方法:

  • boolean add(E e):添加元素到集合中。
  • boolean remove(Object o):从集合中移除指定元素。
  • boolean contains(Object o):判断集合是否包含指定元素。
  • int size():返回集合中的元素个数。
  • Iterator<E> iterator():返回用于遍历集合的迭代器。

3. List 接口

List 接口继承自 Collection 接口,表示一个有序的元素集合。常用实现类包括 ArrayListLinkedListVector

常用方法:

  • E get(int index):返回指定位置的元素。
  • E set(int index, E element):替换指定位置的元素。
  • void add(int index, E element):在指定位置插入元素。
  • E remove(int index):移除指定位置的元素。

ArrayList 类

ArrayList 是一个可变大小的数组实现类。适合频繁读取元素的场景。

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add(1, "C"); // 插入元素到指定位置
String element = list.get(0); // 访问元素
list.remove("B"); // 删除元素

LinkedList 类

LinkedList 是一个链表实现类。适合频繁插入和删除元素的场景。

List<String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.addFirst("C"); // 在开头添加元素
String element = list.getLast(); // 访问最后一个元素
list.removeFirst(); // 删除第一个元素

4. Set 接口

Set 接口也继承自 Collection 接口,表示一个不包含重复元素的集合。常用实现类包括 HashSetLinkedHashSetTreeSet

常用方法:

  • boolean add(E e):添加元素到集合中,如果元素已经存在则返回 false。
  • boolean remove(Object o):从集合中移除指定元素。
  • boolean contains(Object o):判断集合是否包含指定元素。

HashSet 类

HashSet 是基于哈希表的实现类,不保证元素的顺序。

Set<String> set = new HashSet<>();
set.add("A");
set.add("B");
set.add("A"); // 不会添加重复元素
boolean containsA = set.contains("A"); // 检查元素是否存在
set.remove("B"); // 删除元素

TreeSet 类

TreeSet 是基于红黑树的实现类,保证元素的自然顺序。

Set<String> set = new TreeSet<>();
set.add("B");
set.add("A");
set.add("C");
for (String element : set) {
    System.out.println(element); // 输出顺序为 A, B, C
}

5. Map 接口

Map 接口表示键值对的集合,每个键最多对应一个值。常用实现类包括 HashMapLinkedHashMapTreeMap

常用方法:

  • V put(K key, V value):将指定的值与该映射中的指定键相关联。
  • V get(Object key):返回指定键所映射的值。
  • V remove(Object key):如果存在该键的映射关系,则将其移除。
  • boolean containsKey(Object key):判断映射是否包含指定键。
  • Set<K> keySet():返回所有键的集合。

HashMap 类

HashMap 是基于哈希表的实现类,不保证键值对的顺序。

Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("A", 3); // 覆盖键 "A" 的值
int value = map.get("A"); // 获取键 "A" 的值
map.remove("B"); // 删除键 "B" 的键值对
boolean containsKeyA = map.containsKey("A"); // 检查是否包含键 "A"

TreeMap 类

TreeMap 是基于红黑树的实现类,保证键值对的自然顺序。

Map<String, Integer> map = new TreeMap<>();
map.put("B", 2);
map.put("A", 1);
map.put("C", 3);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " = " + entry.getValue()); // 输出顺序为 A=1, B=2, C=3
}

6. Collections 类

Collections 类提供了各种操作集合的方法,如排序、搜索和线程安全的集合。

常用方法:

  • static <T> void sort(List<T> list):对列表进行排序。
  • static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key):使用二分搜索法查找元素。
  • static <T> void shuffle(List<T> list):对列表进行随机排序。
List<String> list = new ArrayList<>();
list.add("B");
list.add("A");
list.add("C");
Collections.sort(list); // 排序
Collections.shuffle(list); // 随机排序
int index = Collections.binarySearch(list, "A"); // 查找元素

7. 迭代器(Iterator)

迭代器用于遍历集合中的元素。Iterator 接口提供了遍历集合的方法。

常用方法:

  • boolean hasNext():如果迭代器中还有元素,则返回 true。
  • E next():返回迭代器中的下一个元素。
  • void remove():移除迭代器返回的最后一个元素。
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String element = iterator.next();
    if (element.equals("B")) {
        iterator.remove(); // 删除元素
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值