学习Java中的集合

94 阅读3分钟

Java中的采集

在引入集合框架之前,流行的对象分组方式是数组、向量和其他方式。上述所有集合的唯一缺点是,它们没有标准的接口。

在实现这些集合时,它们必须独立定义。这也给开发者带来了挑战,因为回忆每个类中存在的方法、语法和构造函数是很有挑战性的。因此,这就需要引入集合框架

现在,开发者可以轻松地访问任何接口,而不需要知道所写的代码或所涉及的类。现在让我们用Java中的集合来实现上述的各种功能。

简介

Java中的集合将数据组织起来,使数据的存储、访问和编辑更加容易。什么是接口?- 接口是一个系统,相关或不相关的实体可以在其中进行交互。

对于我们来说,创建的对象集合将与现有的类库交互,这可以通过JDK提供的接口成功实现。

接口的例子包括。

  • java.util.Collection - 这是一个集合接口。
  • java.util.Map - 这是Map接口。

实现数组和向量

让我们看看在没有集合框架的情况下,上述的集合是如何实现的。

import java.util.ArrayList;
import java.util.Vector;
public class Main {
    public static void main(String[] args) {
        ArrayList<String> studentNames = new ArrayList<>();
        Vector<Integer> age = new Vector<>();
        // Creating instances of ArrayList and Vector
        studentNames.add("Kimosop");
        studentNames.add("Somehalder");
        studentNames.add("James");
        age.addElement(22);
        age.addElement(31);
        age.addElement(14);
        // Adding objects into the containers
        System.out.println(studentNames.toArray().length);
        System.out.println(studentNames.get(1));
        System.out.println(age.elementAt(0));
        // Outputting the integer and name of the array at the index stated
        studentNames.remove(0);
        //removing a name from the list
        System.out.println(studentNames.get(0));
        System.out.println(studentNames.toArray().length);
        // Checking the output after modifying the objects in the list 
    }
}

Output

import java.util.Hashtable;
public class Main {
    public static void main(String[] args) {
        Hashtable<Integer, String> students = new Hashtable<>();
        students.put(22,"Kimosop");
        students.put(25, "Stewie");
        System.out.println(students.get(22));
        System.out.println(students.get(25));
    }
}

集合接口的方法

现在我们来看看集合接口中使用的一些主要方法。

  • add(Object) - 这个方法将一个对象添加到集合中。
  • contains(Object O) - 如果一个特定的对象包含在集合中,其输出是 ,反之则是 。它主要处理布尔型输出。true false
  • isEmpty() - 这个方法也返回一个布尔值。如果集合中有指定的元素,它就输出为真。
  • toArray() - 该方法将集合中的元素转换为数组。
  • size() - 该方法检查集合中元素的大小。
  • max() - 该方法返回一个集合中的最大值。
  • removeIf(Predicate filter) - 这个方法删除一个集合中满足指定谓词的元素。

集合框架的图示

集合框架可以被分为接口和类。层次结构的顶端是iterable接口。这个接口作为所有其他接口和类的根,因为它们都扩展了这个类。

在Iterable接口下面是集合接口,它包含了不同的接口,如list、queue、deque、set等。每个接口都有不同的类,它们有不同的用途,如下图所示。

Hierarchy

从上面的图中我们看到。集合层次结构图由interfacesclasses 。这些接口在树中向树的根部延伸其他接口,也就是Iterable interface

现在让我们分别看看这些接口。

  1. 迭代接口 可迭代接口是层次结构树中的基线接口。它包含了层次结构树中任何一个类可以调用的方法。

它可以被实现,如下图所示。

Iterator<T> iterator()  
  1. 收集接口你可以把收集框架视为收集框架的核心,因为所有类的方法声明都发生在这里。

集合框架中的方法包括。clear(),add(),size()

  1. 数组列表这个类在处理动态数组时有帮助。dynamic array 是一个数组,其大小是不可预测的,因为它一直在增加。其他数组通常有一个固定的大小,你必须说明要存储的元素的数量。

另一方面,动态数组支持使用resizing.ArrayList 方法自动调整大小,该方法位于java.util package ,这意味着每次你想形成一个ArrayList.util 包时,都要导入该包。你可以按照下面的例子来实现这一点。

我们进一步创建了对象名称,并在上面的数组中添加了一个名称列表。

  import java.util.ArrayList

在上面的例子中,我们已经导入了java.util 包,因为我们在创建ArrayList 时将会使用它的类。

  import java.util.ArrayList
  ArrayList students = new ArrayList("Bob", "Kimosop", "Keen");

从上面的片段中,我们已经进一步创建了对象名称,并向数组中添加了一个名称列表。我们也可以将名字添加到数组中,如下图所示。

  ArrayList students = new ArrayList();

  students.add("Bob");
  students.add("Kimosop");
  students.ass("Keen");
// Output
Bob
Kimosop
Keen

上述向数组中的列表添加元素的方法与前者的区别在于,你可以在运行时添加或删除元素。

  1. 集合我们使用集合接口来避免重复和唯一地存储对象。一些集合接口类有:HashSet,Tree set,LinkedHashSet, 以及其他许多类。下面是一个实例化集合的语法。
Set<data-type> set1 = new HashSet<data-type>();  
Set<data-type> set2 = new TreeSet<data-type>();  
  1. Hashset下面的例子将帮助我们更好地理解HashSet
import java.util.HashSet;
import java.util.Iterator;
public class Main {
    public static void main(String[] args) {
        HashSet<String> hashSet = new HashSet<>();
        hashSet.add("Lebron");
        hashSet.add("is");
        hashSet.add("for");
        hashSet.add("Lakers");
        Iterator<String> itr = hashSet.iterator();
        while (itr.hasNext()) {
            System.out.println(itr.next());
        }
    }
}
//Output
Lebron
for
Lakers
is

我们首先实例化了HashSet 类,它自动导入了HashSet 类和Iterator interface 中的方法。现在你可以通过调用hashset.add 方法轻松地将名字添加到HashSet 中。最后,实例化Iterator interface ,导入其所有方法,并决定如何输出名称。

总结

在本教程中,我们涵盖了以下内容。

  1. 介绍并理解了集合。
  2. 数组和向量的实现。
  3. Collection接口中的方法。
  4. 集合框架的图解表示。
  5. 接口
    • Iterable接口。
    • 采集接口
      • 列表
      • 队列和Deque
      • 设置
    • 阵列列表
    • 哈希集。