📜  Java-集合框架(1)

📅  最后修改于: 2023-12-03 14:42:20.503000             🧑  作者: Mango

Java集合框架

Java集合框架是Java平台提供的一组框架和类,用于存储和操作一组对象。Java集合框架具有以下特点:

  • 提供了一组接口和类,方便开发人员进行快速开发。
  • 大多数集合类都是可重复元素,可存储null值,线程不安全,大小可变。
  • 提供了许多种集合实现:List、Set、Map等,以满足不同的需求。
集合框架类图

下面是Java集合框架的基本类图:

Java集合框架类图

  • Collection接口是List、Set和Queue接口的父接口,提供了集合基本操作。
  • List接口表示有序的集合,可以按照插入顺序访问元素。常见的实现类有ArrayList和LinkedList。
  • Set接口表示无序的集合,不会有重复的元素。常见的实现类有HashSet和TreeSet。
  • Queue接口表示队列,元素先进先出。常见的实现类有ArrayDeque和PriorityQueue。
  • Map接口表示键值对的映射表。常见的实现类有HashMap和TreeMap。
List

List是有序的集合,内部以数组的形式实现。List中的元素可以重复,可以根据index访问元素,支持添加、删除、修改等操作。

ArrayList

ArrayList是List接口的实现类之一,是基于数组实现的。它的优点是随机访问速度很快,缺点是在插入和删除操作时速度较慢。

List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");

for (String s : list) {
    System.out.println(s);
}
LinkedList

LinkedList是List接口的另一个实现类,是基于链表实现的。它的优点是在插入和删除速度很快,缺点是随机访问速度较慢。

List<String> list = new LinkedList<>();
list.add("Java");
list.add("Python");
list.add("C++");

for (String s : list) {
    System.out.println(s);
}
Set

Set是无序的集合,集合中的元素不会重复,支持添加、删除等操作。

HashSet

HashSet是Set接口的一个实现类,存储元素时使用哈希表进行存储。它的优点是插入和查询速度较快,缺点是遍历速度较慢。

Set<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
set.add("C++");

for (String s : set) {
    System.out.println(s);
}
TreeSet

TreeSet是Set接口的另一个实现类,它使用红黑树进行存储,保证集合中元素的有序性。元素必须实现Comparable接口或提供一个Comparator对象,用于比较元素之间的大小关系。

Set<Integer> set = new TreeSet<>();
set.add(4);
set.add(2);
set.add(7);

for (Integer i : set) {
    System.out.println(i);
}
Map

Map是键值对的映射表,其中key和value都是对象类型。

HashMap

HashMap是Map接口的一个实现类,存储键值对时使用哈希表进行存储,用key的hashCode()方法和equals()方法来决定value的存储位置。

Map<String, String> map = new HashMap<>();
map.put("Java", "Backend");
map.put("Python", "AI");

for (Map.Entry<String, String> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " : " + entry.getValue());
}
TreeMap

TreeMap是Map接口的另一个实现类,它使用红黑树进行存储,保证键值对的有序性。键必须实现Comparable接口或提供一个Comparator对象,用于比较key之间的大小关系。

Map<Integer, String> map = new TreeMap<>();
map.put(1, "Java");
map.put(2, "Python");

for (Map.Entry<Integer, String> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " : " + entry.getValue());
}
总结

Java集合框架提供了许多种集合实现:List、Set、Map等,开发人员需要根据实际需求选择合适的集合实现。同时,开发人员需要注意线程安全的问题,如果需要多线程访问集合对象,建议使用线程安全的集合实现。