JAVA集合框架(Collections Framework)

Java集合框架是Java标准类库的一部分,提供了一组性能优化的接口和类,用于表示和操作集合,例如列表、栈、队列、集和映射。Java集合框架主要位于java.util包下。

核心接口

Java集合框架定义了几个核心接口,这些接口是集合框架的基础:

  • Collection:单个元素序列的根接口。它提供了添加、删除、清空集合以及大小和迭代等基本方法。

  • List:有序集合(有时称为序列)。此接口允许精确控制列表中每个元素的插入位置,并且可以通过索引访问元素。

  • Set:不允许重复元素的集合。它模拟了数学上的集合概念。

  • SortedSet:扩展了Set接口,保证元素排序。

  • NavigableSet:扩展了SortedSet,提供了导航方法来返回给定搜索目标的最接近匹配项。

  • Queue:先进先出(FIFO)的集合。队列通常用于任务调度。

  • Deque:双端队列,允许我们在两端插入和移除元素。

  • Map:键值对的集合。不是Collection的子接口,因为它的行为与单值集合有较大不同。

  • SortedMap:扩展了Map,保证键排序。

  • NavigableMap:扩展了SortedMap,提供了导航方法。

核心实现类

对应于上述接口,集合框架提供了一系列的实现类:

  • ArrayList:基于动态数组实现的List,提供快速的随机访问能力。

  • LinkedList:基于双向链表实现的List,优化了插入、删除操作。

  • HashSet:基于哈希表实现的Set,存储无序唯一元素。

  • LinkedHashSet:基于哈希表和链表实现,维护了插入顺序。

  • TreeSet:基于红黑树实现的NavigableSet,元素自然排序或根据Comparator排序。

  • PriorityQueue:基于优先级堆实现的Queue,元素按照自然顺序或根据Comparator进行排序。

  • ArrayDeque:基于动态数组实现的Deque,是一个高效的双端队列。

  • HashMap:基于哈希表实现的Map,存储键值对,提供快速访问。

  • LinkedHashMap:基于哈希表和链表实现的Map,维护了插入顺序或访问顺序。

  • TreeMap:基于红黑树实现的NavigableMap,键自然排序或根据Comparator排序。

迭代器

  • Iterator:迭代器接口,用于遍历集合中的元素,提供hasNextnextremove方法。
  • ListIterator:扩展了Iterator,允许双向遍历列表和修改元素。

用法示例

以下是一些使用Java集合框架的基本示例:

List示例
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");
for (String language : list) {
    System.out.println(language);
}
Set示例
Set<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
set.add("Java");
for (String language : set) {
    System.out.println(language); // 输出不包含重复元素
}
Map示例
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 3);
map.put("Banana", 5);
map.put("Orange", 2);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

在这个Map示例中,通过使用entrySet()方法,我们能够迭代map中的每个键值对,并打印出来。

Queue示例
Queue<String> queue = new LinkedList<>();
queue.offer("First");
queue.offer("Second");
queue.offer("Third");
while (!queue.isEmpty()) {
    System.out.println(queue.poll()); // 依次输出并移除队列头部元素
}

在这个Queue示例中,使用offer方法将元素添加到队列的尾部,并使用poll方法将它们从队列的头部移除。

Deque示例
Deque<String> stack = new ArrayDeque<>();
stack.push("First");
stack.push("Second");
stack.push("Third");
while (!stack.isEmpty()) {
    System.out.println(stack.pop()); // 作为栈使用,后进先出
}

在这个Deque示例中,使用push方法将元素压入栈顶,并使用pop方法将它们从栈顶移除,符合后进先出的原则。

Collections类

java.util.Collections是一个包含有关集合操作的静态方法的类,例如排序、搜索和线程安全转换。

List<Integer> numbers = new ArrayList<>(Arrays.asList(5, 3, 1, 2, 4));
Collections.sort(numbers); // 排序
for (int number : numbers) {
    System.out.println(number); // 输出排序后的列表
}

// 创建一个不可修改的集合
List<Integer> unmodifiableList = Collections.unmodifiableList(numbers);

在这个Collections示例中,我们使用sort方法对一个整数List进行排序,然后使用unmodifiableList方法创建了一个不可修改的列表视图。

总结

Java集合框架提供了一套性能优化的集合类和接口,以及与之配套的算法。它们极大地简化了集合的处理,是Java程序开发中不可或缺的一部分。通过熟练地使用集合框架,可以提高编码效率,增强程序的健壮性和可维护性。

  • 26
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值