📅  最后修改于: 2023-12-03 14:42:20.503000             🧑  作者: Mango
Java集合框架是Java平台提供的一组框架和类,用于存储和操作一组对象。Java集合框架具有以下特点:
下面是Java集合框架的基本类图:
List是有序的集合,内部以数组的形式实现。List中的元素可以重复,可以根据index访问元素,支持添加、删除、修改等操作。
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是List接口的另一个实现类,是基于链表实现的。它的优点是在插入和删除速度很快,缺点是随机访问速度较慢。
List<String> list = new LinkedList<>();
list.add("Java");
list.add("Python");
list.add("C++");
for (String s : list) {
System.out.println(s);
}
Set是无序的集合,集合中的元素不会重复,支持添加、删除等操作。
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是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是键值对的映射表,其中key和value都是对象类型。
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是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等,开发人员需要根据实际需求选择合适的集合实现。同时,开发人员需要注意线程安全的问题,如果需要多线程访问集合对象,建议使用线程安全的集合实现。