📜  Java的非泛型与泛型集合(1)

📅  最后修改于: 2023-12-03 15:02:05.743000             🧑  作者: Mango

Java的非泛型与泛型集合

Java的集合是Java编程中经常用到的重要工具之一。它是由一组接口、类和算法组成的工具库,提供了可扩展和高效的数据结构和算法实现。

Java的集合分为两种:非泛型集合和泛型集合。非泛型集合是指在集合中保存的对象不是统一的数据类型,需要使用强制类型转换来存取集合中的元素。而泛型集合则是在定义时就指定了集合中保存的数据类型,可以避免类型转换带来的安全隐患。下面将分别对这两种集合进行介绍。

非泛型集合

Java的非泛型集合主要包括List、Set和Map。它们都是由Object类派生而来的,可以存储任何类型的数据。但是在使用时需要进行类型转换,如果转换错误会抛出ClassCastException异常。

List

List是一个有序集合,允许重复元素。常用的实现类有ArrayList和LinkedList。在使用时需要通过索引来访问元素,常用的方法有add()、get()、remove()、size()等。

List list = new ArrayList();
list.add("Java");
list.add(100);
String str = (String) list.get(0);
int num = (int) list.get(1); // ClassCastException
Set

Set是一个无序集合,不允许重复元素。常用的实现类有HashSet和TreeSet。在使用时可以通过迭代器来访问元素,常用的方法有add()、contains()、remove()、size()等。

Set set = new HashSet();
set.add("Java");
set.add(100);
if (set.contains("Java")) {
    set.remove(100);
}
Map

Map是一个键值对的集合,每个键对应一个唯一的值。常用的实现类有HashMap和TreeMap。在使用时可以通过键来访问值,常用的方法有put()、get()、remove()、size()等。

Map map = new HashMap();
map.put("name", "张三");
map.put("age", 20);
String name = (String) map.get("name");
int age = (int) map.get("age"); // ClassCastException
泛型集合

Java 5引入了泛型,可以在定义集合时指定集合中保存的数据类型,避免了非泛型集合中类型转换带来的安全隐患。

List
List<String> list = new ArrayList<String>();
list.add("Java");
list.add("C++");
String str = list.get(0);
Set
Set<Integer> set = new HashSet<Integer>();
set.add(100);
set.add(200);
if (set.contains(100)) {
    set.remove(200);
}
Map
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("鸡蛋", 5);
map.put("香蕉", 10);
int num = map.get("鸡蛋");

泛型的使用可以使代码更加规范和安全,减少运行时错误的发生。在开发过程中建议尽量使用泛型集合来提高程序的可读性和可维护性。