JavaRush /Java 博客 /Random-ZH /喝咖啡休息#185。Java 集合框架综合指南

喝咖啡休息#185。Java 集合框架综合指南

已在 Random-ZH 群组中发布
来源:Medium 本教程将帮助您更好地理解 Java Collection Framework 中包含的各种类和接口的工作原理。 喝咖啡休息#185。 Java 集合框架综合指南 - 1Java Collection 是一个框架,它提供了一个统一的架构来存储和管理一组对象。它的核心是一组类和接口,提供了用 Java 语言表示和操作对象集合的标准方法。该框架还有助于实现常用的数据结构,例如列表、集合和映射。Java 集合框架包括多个接口和类。以下是其中一些的列表:

接口

Java 集合框架中的接口定义了可以对集合执行的一般行为和操作。这包括添加或删除项目、重复集合中的项目等等。
  • Collection:集合层次结构中的根接口,表示一组称为元素的对象。
  • 列表:允许重复的有序元素集合。
  • Set:不允许重复的元素的集合。
  • Map:键值对的集合,其中每个键都是唯一的。
  • 队列:队列是一种数据结构,用于以先进先出(FIFO)方式存储元素。
此列表并未包含所有内容,而仅包含 Java Collection Framework 中最常用的接口。现在让我们仔细看看它们中的每一个。

收藏

集合是一组称为其元素的对象。这是一个可以包含对其他对象的引用的对象。Collection 接口是集合层次结构的根。这是 Java 集合框架中所有集合的基本接口。它定义了所有集合中必须实现的基本方法,例如add()remove()contains()。以下是在 Java 集合框架中使用集合的示例。这里 Collection 接口用于添加和删除集合中的元素:
import java.util.Collection;
import java.util.ArrayList;

public class CollectionExample {
    public static void main(String[] args) {
        // Создаем новую коллекцию
        Collection<String> stringCollection = new ArrayList<>();

        // Добавляем несколько элементов в коллекцию
        stringCollection.add("hello");
        stringCollection.add("world");
        stringCollection.add("foo");
        stringCollection.add("bar");

        // Печатаем число элементов в коллекции
        System.out.println("Number of elements: " + stringCollection.size());

        // Удаляем элемент из коллекции
        stringCollection.remove("foo");

        // Опять печатаем число элементов в коллекции
        System.out.println("Number of elements: " + stringCollection.size());
    }
}
输出是:
元件数量:4 元件数量:3
正如您所看到的,Collection 接口是一种对对象集合执行常见操作的简单便捷的方法。在 Java 中使用集合时,它经常被用作起点。Java 集合框架包括几个定义不同类型集合的常见行为的接口。其中一些是java.util.Collection接口组的一部分:
  • java.util.List
  • java.util.set
  • java.util.Queue

java.util.List

列表是对象的有序集合,其中的每个元素在列表中占据特定的位置。List 接口扩展了 Collection 接口,并添加了多种处理列表的方法,例如按元素在列表中的位置访问元素的方法以及搜索和排序列表的方法。列表可以包含重复的元素,这些元素可以通过它们在列表中的位置来访问。以下是使用 List 接口添加、删除和访问列表中的项目的示例:
import java.util.List;
import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        // Создаем новый список
        List<String> stringList = new ArrayList<>();

        // Добавляем несколько элементов в список
        stringList.add("India");
        stringList.add("UAE");
        stringList.add("London");
        stringList.add("US");

        // Печатаем первый элемент в списке
        System.out.println("First element: " + stringList.get(0));

        // Удаляем второй элемент из списка
        stringList.remove(1);

        // Печатаем второй элемент в списке
        System.out.println("Second element: " + stringList.get(1));
    }
}
结论:
第一元素:印度 第二元素:伦敦
如上所示,List 接口提供了一种处理有序元素集合的便捷方法。当您需要维护集合中元素的顺序或需要通过列表中的索引访问元素时,通常会使用它。

java.util.Set

Java Collection Framework 中的 Set 是唯一元素的无序集合,不允许重复元素。Set 接口扩展了 Collection 接口并添加了多个方法,例如检查元素是否在集合中的方法以及在集合中添加和删除元素的方法。以下是使用 Set 接口在 Java Collection Framework 中的集合中添加和删除元素的示例:
import java.util.Set;
import java.util.HashSet;

public class SetExample {
    public static void main(String[] args) {
        // Создаем новый set
        Set<String> stringSet = new HashSet<>();

        // Добавляем несколько элементов в set
        stringSet.add("Jan");
        stringSet.add("Feb");
        stringSet.add("March");
        stringSet.add("April");

        // Проверяем наличие в set element "March"
        if (stringSet.contains("March")) {
            System.out.println("The set contains the element 'March'");
        }

        // Удаляем элемент "April" из set
        stringSet.remove("April");

        // Опять проверяем наличие element "April" в set
        if (!stringSet.contains("April")) {
            System.out.println("The set no longer contains the element 'April'");
        }
    }
}
结论:
该集合包含元素“March” 该集合不再包含元素“April”

java.util.Queue

队列是一种数据结构,用于按先进先出 (FIFO) 顺序存储元素。这意味着添加到队列中的第一个元素将是第一个被删除的元素。以下是如何在 Java Collection Framework 中使用队列的示例:
// Creation очереди
Queue<String> queue = new LinkedList<>();

// Добавление элементов в очередь
queue.add("apple");
queue.add("banana");
queue.add("orange");
// Печатаем очередь
System.out.println("Queue: " + queue);
// Удаляем элемент из очереди
String element = queue.remove();
System.out.println("Removed element: " + element);
// Печатаем обновленную очередь
System.out.println("Queue: " + queue);
在此示例中,我们创建了一个字符串队列并向其中添加了三个元素:“apple”、“banana”和“orange”。然后我们打印队列以查看其当前状态。接下来,我们从队列中删除该元素并将其打印到控制台。最后,我们打印更新后的队列,以确保删除的元素不再在队列中。

地图

Java Collection Framework 中的java.util.Map接口用于将键映射到值。它允许您将元素存储为键值对,并提供访问、修改和迭代映射中的元素的方法。下面是使用Map接口的示例:
// Создаем Map
 Map<String, Integer> map = new  HashMap <>();
// Добавляем элементы в Map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печать Map
 System.out.println("Map: " + map);
// Получаем meaning для определенного ключа
int  value  = map.get( "banana" );
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из Map
map.remove("orange");
// Печать обновленной карты
 System.out.println( "Map: " + map);
在此示例中,我们通过添加三个元素来创建字符串和整数的映射:“apple”匹配 1,“banana”匹配 2,“orange”匹配 3。然后我们打印该映射以查看其当前含义。之后,我们获取“banana”键的值并将其打印到控制台。最后,我们从映射中删除“orange”的键值对并打​​印更新后的映射,以查看删除的元素不再存在。

课程

类是集合接口的具体实现。它提供了框架中接口定义的常见行为和操作的具体实现。
  • ArrayList : List接口的实现,具有可调整大小的数组。
  • LinkedList:双向链表,ListDeque接口的实现。
  • HashSet : Set的一种实现,使用哈希表进行存储。
  • TreeSet : Set的一种实现,使用树进行存储。
  • HashMap : Map的一种实现,使用哈希表进行存储。
上面的列表是 Java Collection Framework 中最常用的类之一。现在我们来看看这些类的详细解释。

数组列表

Java 集合中的java.util.ArrayList类用于在列表中存储可调整大小的元素数组。它是java.util.List接口的广泛使用的实现,它使用数组来存储元素,并提供用于访问、修改和迭代列表中的元素的有效方法。java.util.ArrayList类提供对其元素的快速随机访问,但在随机位置插入和删除速度较慢。下面是在 Java Collection Framework 中使用ArrayList类的示例:
// Создаем array list
List<String> list = new ArrayList<>();
// Добавляем элементы в array list
list.add("qa");
list.add("devops");
list.add("dev");
// Печатаем array list
System.out.println("Array list: " + list);
// Доступ к элементу по определенному индексу
String element = list.get(1);
System.out.println("Element at index 1: " + element);
// Удаление element из the array list
list.remove(1);
// Print the updated array list
System.out.println("Array list: " + list);
如您所见,我们创建了一个字符串数组并向其中添加了三个元素:“qa”、“devops”和“dev”。然后我们打印数组列表以查看其当前状态。之后,我们访问索引 1 处的元素并将其打印到控制台。最后,我们从数组列表中删除索引 1 处的元素,并打印更新后的数组列表,以确保删除的元素不再位于列表中。

链表

Java Collection Framework 中的java.util.LinkedList类继承自AbstractList类,并实现ListDeque接口。它提供了在列表开头和结尾添加、删除和访问元素的有效方法。该类也是List接口的实现,它使用双向链表来存储元素。它提供在任意位置的快速插入和删除,但对其元素的随机访问速度较慢。下面是如何使用Java Collection Framework 中的 LinkedList类的示例:
// Создаем linked list
List<String> list = new LinkedList<>();
// Добавляем элементы в linked list
list.add("selenium");
list.add("cypress");
list.add("playwright");
// Печатаем linked list
System.out.println("Linked list: " + list);
// Добавляем элемент в начало списка
list.add(0, "webdriver.io");
// Печатаем обновленный linked list
System.out.println("Linked list: " + list);
// Удаляем первый элемент в списке
list.remove(0);
// Еще раз печатаем обновленный linked list
System.out.println("Linked list: " + list);
在此示例中,我们创建了一个字符串链接列表并向其中添加了三个元素:“selenium”、“cypress”和“playwright”。然后我们打印链表以查看其当前状态。接下来,我们将元素“webdriver.io”添加到列表的开头并打印更新后的链接列表。最后,我们从链表中删除第一个元素,并再次打印更新后的链表,可以看到被删除的元素已经不在链表中了。

哈希集

Java Collection Framework 中的java.util.HashSet类用于存储集合中唯一元素的集合。它提供了java.util.Set接口的基于哈希表的实现。它还提供快速插入、删除和搜索,但不保留其元素的顺序。下面是在 Java Collection Framework 中 使用HashSet类的示例:
// Создаем hash set
Set<String> set = new HashSet<>();

// Добавляем элементы в hash set
set.add("rose");
set.add("lily");
set.add("lotus");
// Попытка добавить повторяющийся элемент
set.add("rose");
// Печатаем hash set
System.out.println("Hash set: " + set);
// Удаляем элемент из hash set
set.remove("lily");
// Печать обновленного hash set
System.out.println("Hash set: " + set);
在这里,我们创建了一个字符串哈希集,并向其中添加了三个元素:“rose”、“lily”和“lotus”。然后我们尝试再次添加元素“rose”,但由于哈希集不允许重复,因此不会添加它。之后,我们打印哈希集以查看其当前状态。然后,我们从集合中删除元素“lily”并打印集合的更新哈希,以查看删除的元素不再在集合中。

树集

Java Collection Framework 中的java.util.TreeSet类用于存储按升序排序的集合中唯一元素的集合。它提供了java.util.Set接口的基于树的实现来存储元素,而不允许重复元素。该类提供快速插入、删除和搜索,并根据元素的自然顺序或比较器维护其元素的顺序。以下是如何在 Java 集合框架中 使用TreeSet类的示例:
// Создаем tree set
Set<String> set = new TreeSet<>();

// Добавляем элементы в tree set
set.add("apple");
set.add("banana");
set.add("orange");
// Попытка добавить повторяющийся элемент
set.add("apple");
// Печатаем tree set
System.out.println("Tree set: " + set);
// Удаляем элемент из tree set
set.remove("banana");
// Печатаем обновленный tree set
System.out.println("Tree set: " + set);
在此示例中,我们创建一个字符串树集并向其中添加三个元素:“apple”、“banana”和“orange”。然后我们尝试再次添加“apple”元素,但由于树集不允许重复,因此不会添加它。之后,我们打印树集以查看其当前状态。由于树集是按升序排序的,因此元素将按以下顺序打印:“apple”,“banana”和“orange”。然后,我们从集合中删除元素“banana”并打印更新后的树集,以查看删除的元素不再在集合中。

哈希映射

Java Collection Framework 中的java.util.HashMap类用于在映射中存储键到值的映射。它提供了java.util.Map接口的基于哈希表的实现,并允许将元素存储为键值对。该类提供快速插入、删除和搜索,但不保留其元素的顺序。下面是如何使用Java Collection Framework 中的 HashMap类的示例:
// Создаем hash map
Map<String, Integer> map = new HashMap<>();

// Добавляем элементы в hash map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печатаем hash map
System.out.println("Hash map: " + map);
// Получаем meaning для определенного ключа
int value = map.get("banana");
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из hash map
map.remove("orange");
// Печатаем обновленный hash map
System.out.println("Hash map: " + map);
在此示例中,我们创建一个整数字符串的哈希映射,并向其中添加三个元素:“apple”匹配 1,“banana”匹配 2,“orange”匹配 3。然后我们打印哈希映射以查看其当前状态。之后,我们获取“banana”键的值并将其打印到控制台。最后,我们从哈希映射中删除“orange”的键值对,并打印更新后的哈希映射,以查看删除的元素不再在其中。

结论

Java 集合框架是一组类和接口,它们提供了用 Java 编程语言表示和操作对象集合的标准方法。这使得开发人员/测试人员能够以一致且高效的方式处理对象集合。该框架为他们提供了存储、访问和管理集合中的项目的方法,并允许他们根据应用程序的要求轻松地在不同的集合实现之间切换。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION