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
}
}

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)- 如果一个特定的对象包含在集合中,其输出是 ,反之则是 。它主要处理布尔型输出。truefalseisEmpty()- 这个方法也返回一个布尔值。如果集合中有指定的元素,它就输出为真。toArray()- 该方法将集合中的元素转换为数组。size()- 该方法检查集合中元素的大小。max()- 该方法返回一个集合中的最大值。removeIf(Predicate filter)- 这个方法删除一个集合中满足指定谓词的元素。
集合框架的图示
集合框架可以被分为接口和类。层次结构的顶端是iterable接口。这个接口作为所有其他接口和类的根,因为它们都扩展了这个类。
在Iterable接口下面是集合接口,它包含了不同的接口,如list、queue、deque、set等。每个接口都有不同的类,它们有不同的用途,如下图所示。

从上面的图中我们看到。集合层次结构图由interfaces 和classes 。这些接口在树中向树的根部延伸其他接口,也就是Iterable interface 。
现在让我们分别看看这些接口。
- 可迭代接口 可迭代接口是层次结构树中的基线接口。它包含了层次结构树中任何一个类可以调用的方法。
它可以被实现,如下图所示。
Iterator<T> iterator()
- 收集接口你可以把收集框架视为收集框架的核心,因为所有类的方法声明都发生在这里。
集合框架中的方法包括。clear(),add(),size() 。
- 数组列表这个类在处理动态数组时有帮助。
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
上述向数组中的列表添加元素的方法与前者的区别在于,你可以在运行时添加或删除元素。
- 集合我们使用集合接口来避免重复和唯一地存储对象。一些集合接口类有:
HashSet,Tree set,LinkedHashSet, 以及其他许多类。下面是一个实例化集合的语法。
Set<data-type> set1 = new HashSet<data-type>();
Set<data-type> set2 = new TreeSet<data-type>();
- 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 ,导入其所有方法,并决定如何输出名称。
总结
在本教程中,我们涵盖了以下内容。
- 介绍并理解了集合。
- 数组和向量的实现。
- Collection接口中的方法。
- 集合框架的图解表示。
- 接口
- Iterable接口。
- 采集接口
- 列表
- 队列和Deque
- 设置
- 类
- 阵列列表
- 哈希集。