📅  最后修改于: 2023-12-03 15:23:41.990000             🧑  作者: Mango
Java中的泛型集集成了集合的特性和泛型的优势。泛型集能够存储一组同类型(或子类型)的数据,同时还可支持泛型编程,使代码更加通用和可维护。
Java中定义泛型集合的语法如下:
ArrayList<T> list = new ArrayList<T>();
其中,ArrayList
是指定泛型类型,T
是泛型占位符,表示泛型类型。
Java中的泛型类型可以是Java类、接口、数组、注解以及基本数据类型的封装类型。
定义泛型集合后,我们可以使用Java提供的方法对泛型集合进行操作。
向泛型集合中添加元素有两种方式:
add
方法添加元素list.add("hello");
addAll
方法添加元素String[] arr = {"world", "!"};
list.addAll(Arrays.asList(arr));
使用remove
方法或removeAll
方法删除元素:
list.remove(0); // 删除第一个元素
list.removeAll(Arrays.asList(arr)); // 删除数组中的所有元素
indexOf
方法用于返回元素在泛型集合中的索引位置:
int index = list.indexOf("hello"); // 在泛型集合中找到"hello"的索引位置,如果不存在返回-1
使用for-each循环可以遍历泛型集合中的所有元素:
for (T element : list) {
System.out.println(element);
}
Java的泛型集合支持类型限定,可以定义泛型类型的上限和下限:
泛型类型的上限,指定了泛型类型必须是某个类或该类的子类。类型上限使用关键字extends
:
class Pair<T extends Number> {
public T first;
public T second;
}
在这个例子中,泛型类型T
必须是Number
或其子类。
泛型类型的下限,指定了泛型类型必须是某个类或该类的父类。类型下限使用关键字super
:
public static <T> void copy(List<? super T> dest, List<? extends T> src) {
for (int i = 0; i < src.size(); i++) {
dest.set(i, src.get(i));
}
}
在这个例子中,dest
必须是T
的超类,src
必须是T
的子类。
Java的泛型集合提供了一种简单、灵活、通用的数据存储方式,可以避免类型不匹配带来的问题。了解泛型集合的基本操作和类型限定,能够更好地应用泛型集合,提高代码的可读性和可维护性。