集合框架(Collection)是 Java 编程语言中一个非常重要的组成部分,它为存储和操作数据提供了一套灵活而强大的API。
本文将详细介绍Java集合框架的基本概念、常用接口和实现类,并通过代码示例来加深理解,帮助大家更好地掌握这一核心知识。
一、Java集合框架概述
Java集合框架主要包括两种类型的集合:List、Set和Map。其中,List、Set是继承自java.util.Collection
接口的,而Map则是一个独立的接口。集合框架的设计遵循了Java的泛型原则,允许开发者在编译期间就确定集合中元素的类型,从而避免了类型转换的错误。
二、List接口
List接口代表了一个有序集合,每个元素都可以有一个索引。常用的实现类有ArrayList
和LinkedList
。
一) ArrayList
ArrayList
是基于动态数组的数据结构,它允许我们随机访问集合中的元素,但在插入和删除操作时可能需要复制整个数组,因此这些操作的效率较低。
代码示例:
ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");// 随机访问
String fruit = list.get(1); // 返回 "Banana"// 迭代遍历
for (String fruit : list) {System.out.println(fruit);
}
二) LinkedList
LinkedList
实现了List接口,但它是基于双向链表的数据结构。这使得在链表的任何位置插入或删除元素都非常高效,但是随机访问元素的效率较低。
代码示例:
LinkedList<String> linkedList = new LinkedList<>();
linkedList.addFirst("Apple");
linkedList.addLast("Banana");// 在头部插入
linkedList.addFirst("Cherry");// 迭代遍历
Iterator<String> iterator = linkedList.iterator();
while (iterator.hasNext()) {String fruit = iterator.next();System.out.println(fruit);
}
三、 Set接口
Set接口代表了一个不允许重复元素的集合。常用的实现类有HashSet
和TreeSet
。
一) HashSet
HashSet
是基于哈希表的实现,它提供了快速的查找、添加和删除操作。但是,由于哈希表的特性,HashSet
不保证元素的顺序。
代码示例:
HashSet<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Cherry");// 检查元素是否存在
boolean contains = set.contains("Apple"); // 返回 true// 迭代遍历
for (String fruit : set) {System.out.println(fruit);
}
二) TreeSet
TreeSet
是基于红黑树的实现,它可以确保元素处于排序状态。因此,TreeSet
提供了有序的元素访问。
代码示例:
TreeSet<String> treeSet = new TreeSet<>();
treeSet.add("Apple");
treeSet.add("Banana");
treeSet.add("Cherry");// 有序迭代遍历
for (String fruit : treeSet) {System.out.println(fruit);
}
四、 Map接口
Map接口代表了一个键值对的集合,每个元素都由一个键和一个值组成。常用的实现类有HashMap
和TreeMap
。
一) HashMap
HashMap
是基于哈希表的实现,它允许我们快速地根据键来访问值。但是,键值对中的键必须实现hashCode
和equals
方法,以确保哈希表的正确性。
代码示例:
HashMap<String, Integer> map = new HashMap<>();
map.put("Apple", 10);
map.put("Banana", 20);
map.put("Cherry", 30);// 访问值
Integer price = map.get("Apple"); // 返回 10// 迭代遍历
for (Map.Entry<String, Integer> entry : map.entrySet()) {String fruit = entry.getKey();Integer price = entry.getValue();System.out.println(fruit + " : " + price);
}
二) TreeMap
TreeMap
是基于红黑树的实现,它可以根据键的自然顺序或者自定义的比较器来对键值对进行排序。
代码示例:
TreeMap<String, Integer> treeMap = new TreeMap<>(new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return Integer.compare(o1.length(), o2.length());}
});
treeMap.put("Apple", 10);
treeMap.put("Banana", 20);
treeMap.put("Cherry", 30);// 有序迭代遍历
for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {String fruit = entry.getKey();Integer price = entry.getValue();System.out.println(fruit + " : " + price);
}
Java集合框架是Java程序员必须掌握的基础知识之一。通过本文的介绍和代码示例,希望能帮助大家更好地理解和使用集合框架,从而提高编程效率和代码质量。
有帮助请点赞收藏呀~
【150 道精选 Java 高频面试题】请go公众号:码路向前 。