02-Collection、泛型

发布时间 2023-04-17 21:26:51作者: RookieMaster

02-Collection、泛型

1. Collection接口

在Java中,Collection是一个用于存储和操作一组对象的接口,它是Java集合框架中最基本的接口之一。Collection接口提供了许多常用的方法,用于对集合中的对象进行添加、删除、查找、遍历等操作,是Java中处理集合数据的常用工具。

概述

Collection接口是Java集合框架中定义的一个顶层接口,它继承了Iterable接口,表示它的实现类可以被迭代遍历。Collection接口定义了一些常用的方法,包括添加、删除、查找、遍历等操作,用于对集合中的对象进行处理。Collection接口的实现类包括了许多常用的集合类,例如ArrayListLinkedListHashSetTreeSet等。

常用方法

Collection接口提供了丰富的方法,以下是一些常用的方法:

  • add(E e):向集合中添加一个元素。
  • remove(Object o):从集合中删除指定的元素。
  • contains(Object o):判断集合中是否包含指定的元素。
  • size():返回集合中元素的个数。
  • isEmpty():判断集合是否为空。
  • clear():清空集合中的所有元素。
  • iterator():返回一个用于遍历集合的迭代器。
  • toArray():将集合转换为数组。

举例代码说明

以下是使用Collection接口进行集合操作的示例代码:

// 创建一个ArrayList集合
List<String> list = new ArrayList<>();

// 添加元素
list.add("apple");
list.add("banana");
list.add("cherry");

// 判断集合是否包含指定元素
boolean containsBanana = list.contains("banana");

// 删除指定元素
list.remove("cherry");

// 遍历集合并打印元素
for (String fruit : list) {
    System.out.println(fruit);
}

// 将集合转换为数组
String[] fruits = list.toArray(new String[0]);

上述代码中,首先创建了一个ArrayList集合,并使用add方法添加了三个元素。接着使用contains方法判断集合中是否包含指定元素,使用remove方法删除指定元素,使用for-each循环遍历集合并打印元素,最后使用toArray方法将集合转换为数组。

以上是关于Collection接口的概述、常用方法和举例代码说明。在实际编程中,Collection接口及其实现类常用于存储和处理一组对象的场景,如集合数据的添加、删除、查找、遍历等操作。

2. Iterator 迭代器

在 Java 中,Iterator(迭代器)是用于遍历集合(Collection)中元素的一种常用方式。它是一个接口,定义了一些用于访问集合中元素的方法,通过调用这些方法,可以按顺序访问集合中的每一个元素。

概述

Iterator 接口是 Java 集合框架中的一个接口,它定义了用于遍历集合中元素的方法,包括 hasNext()next()remove() 等。通过使用 Iterator 接口,可以在不知道集合的具体实现类型的情况下,遍历集合中的元素,实现了解耦合的效果。

常用方法

Iterator 接口提供了一些常用的方法,以下是一些常用的方法:

  • hasNext():判断集合中是否还有下一个元素,返回布尔值。
  • next():返回集合中的下一个元素,并将迭代器位置向后移动。
  • remove():从集合中删除通过 next() 方法返回的元素。

举例代码说明

以下是使用 Iterator 进行集合遍历的示例代码:

// 创建一个ArrayList集合
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");

// 获取Iterator迭代器
Iterator<String> iterator = list.iterator();

// 使用Iterator遍历集合
while (iterator.hasNext()) {
    String fruit = iterator.next();
    System.out.println(fruit);
}

// 使用Iterator删除集合中的元素
iterator = list.iterator();
while (iterator.hasNext()) {
    String fruit = iterator.next();
    if (fruit.equals("banana")) {
        iterator.remove();
    }
}

上述代码中,首先创建了一个 ArrayList 集合,并使用 add 方法添加了三个元素。然后通过调用 iterator 方法获取集合的迭代器。接着使用 while 循环和 hasNext()next() 方法遍历集合中的元素,并使用 remove() 方法删除集合中的指定元素。注意,在使用 Iteratorremove() 方法删除元素时,应该使用迭代器的 remove() 方法而不是集合的 remove() 方法,以避免可能的并发修改异常。

以上是关于 Iterator 迭代器的概述、常用方法和举例代码说明。在实际编程中,Iterator 接口常用于遍历集合中的元素,特别适用于需要在遍历过程中删除元素的情况。

3. 泛型

在 Java 中,泛型是一种强大的特性,允许在编译时期指定集合中元素的类型,从而增加了类型安全性和代码的可复用性。泛型可以用于类、接口、方法等地方,使得代码更加灵活和可读。

概述

泛型是一种编译时期的类型检查机制,允许在定义类、接口、方法时使用类型参数来代替具体的类型。这样,我们可以在使用这些类、接口、方法时指定实际的类型,从而避免了类型转换和运行时错误。

泛型的优点有:

  • 提供了编译时期的类型检查,减少了类型错误的可能性。
  • 提高了代码的可读性和可维护性,使得代码更加灵活和通用。
  • 避免了类型转换的开销,提高了性能。

常用方法

泛型在 Java 中有一些常用的用法,包括:

  • 泛型类:使用类型参数定义的类,可以在创建对象时指定类型,例如 ArrayList
  • 泛型接口:使用类型参数定义的接口,可以在实现接口时指定类型,例如 List
  • 泛型方法:使用类型参数定义的方法,可以在调用时指定类型,例如 public void printList(List list)
  • 通配符:使用 ? 表示的通配符,可以匹配任意类型,例如 List
  • 上界通配符:使用 extends 关键字限制类型的上界,例如 List
  • 下界通配符:使用 super 关键字限制类型的下界,例如 List

举例代码说明

以下是使用泛型的示例代码:

// 定义一个泛型类
class MyArrayList<T> {
    private T[] array;

    public MyArrayList(T[] array) {
        this.array = array;
    }

    public T get(int index) {
        return array[index];
    }

    public void set(int index, T value) {
        array[index] = value;
    }
}

// 使用泛型类
Integer[] intArray = new Integer[3];
MyArrayList<Integer> myList = new MyArrayList<>(intArray);
myList.set(0, 1);
int value = myList.get(0);

// 定义一个泛型方法
public static <T> void printList(List<T> list) {
    for (T item : list) {
        System.out.println(item);
    }
}

// 使用泛型方法
List<String> stringList = new ArrayList<>();
stringList.add("apple");
stringList.add("banana");
stringList.add("cherry");
printList(stringList);

上述代码中,首先定义了一个泛型类 MyArrayList,可以接收任意类型的数组,并提供了对数组元素的访问和修改方法。然后定义了一个泛型方法 printList,可以打印任意类型的集合元素。