在本文中,我们将从集合框架中 了解三个重要的集合类ArrayList、Vector和HashMap,并开始在我们自己的代码中使用它们。 使用集合和集合类,我们可以将一组元素存储为简单对象,并使用这些类中可用的各种方法来操作它们。类和可以从包中获得。另一个类是集合,可从包中获取,它允许您存储键值映射的集合。这使得当密钥已知时可以从集合中获取所需的值。让我们一一看看使用这些集合类的示例。示例 1. 在本示例中,我们将使用类 - ArrayList 集合编写一个简单的程序 清单 1. 示例 1 的执行代码
ArrayList
Vector
ArrayList
Vector
java.util
java.util
HashMap
// подключаем класс
import java.util.ArrayList;
public class ArrayListExample {
static String[] favouriteCharacters = {"Harry", "Ron", "Hermione", "Snape", "Dumbledore", "Moody", "Riddle", "Fred"};
int i;
public ArrayList favouritelist = new ArrayList();
// метод добавляет элементы ‘favouriteCharacters’ в ‘favouritelist’
private void includeCharacters(String[]favouriteCharacters)
{
for (i = 0; i < favouriteCharacters.length; i++) {
// добавление элементов по одному из массива ‘favouriteCharacters’
favouritelist.add(favouriteCharacters[i]);
printCharacters(i);
}
// добавление элементов, посредством указания позиций
favouritelist.add(1, "george");
favouritelist.add(4, "Peter");
}
// метод выводит элемент ‘favouritelist’ по указанной позиции
private void printCharacters(int i) {
System.out.println("Character " + (i + 1) + ":" + favouritelist.get(i));
}
// метод выводит все элементы ‘favouritelist’
private void printCharacters() {
System.out.println("\n");
for(int i=0;i<favouritelist.size();i++){
System.out.println("Character" + (i + 1) + ":" + favouritelist.get(i));
} }
// метод возвращает размер коллекции ‘favouritelist’
private int sizeofCharactersList() {
System.out.println("\n");
System.out.println("Total No of Characters in Array:" + favouriteCharacters.length);
System.out.println("Total No of Characters in List:" + favouritelist.size());
return favouritelist.size();
}
// метод выводит позицию element ‘favouritelist’ по указанному имени
public void getCharacterPostion(String characterName) {
System.out.println("\n");
System.out.println("The position of the character\t" + characterName + "\tis\t" + favouritelist.indexOf(characterName));
}
// метод удаляет элемент ‘favouritelist’ по указанному имени
public void removeCharacter(String characterName) {
if(favouritelist.size()>favouriteCharacters.length){
favouritelist.remove(characterName);
}
else{
System.out.println("\n");
System.out.println("The element\t"+favouritelist.get(favouritelist.indexOf(characterName))+"\tcannot be removed");
}
}
// метод удаляет элемент ‘favouritelist’ по указанной позиции
public void removeCharacter(int i) {
if(favouritelist.size()>favouriteCharacters.length){
favouritelist.remove(i);
}
else{
System.out.println("The element\t"+favouritelist.get(i)+"\tcannot be removed");
}
}
public static void main(String args[]) {
ArrayListExample example = new ArrayListExample();
example.includeCharacters(favouriteCharacters);
example.printCharacters();
int size = example.sizeofCharactersList();
example.getCharacterPostion("Ron");
example.removeCharacter("Snape");
example.removeCharacter(2);
example.sizeofCharactersList();
example.removeCharacter("Harry");
example.removeCharacter(4);
}
}
运行该程序将产生以下输出:
Character 1:Harry
Character 2:Ron
Character 3:Hermione
Character 4:Snape
Character 5:Dumbledore
Character 6:Moody
Character 7:Riddle
Character 8:Fred
Character1:Harry
Character2:george
Character3:Ron
Character4:Hermione
Character5:Peter
Character6:Snape
Character7:Dumbledore
Character8:Moody
Character9:Riddle
Character10:Fred
Total No of Characters in Array:8
Total No of Characters in List:10
The position of the character Ron is 2
Total No of Characters in Array:8
Total No of Characters in List:8
The element Harry cannot be removed
The element Dumbledore cannot be removed
让我们逐步查看提供的示例程序。在此示例中,在程序的第一行,我们导入类 - collection ArrayList
。favouriteCharacters
然后,我们轮流初始化一个包含人员姓名和favouritelist
集合实例的字符串数组ArrayList
。该方法includeCharacters(args)
可以分为两部分。在该方法的第一部分中,使用循环将元素从数组添加到集合中。在这种情况下,添加元素的ArrayList
顺序与它们在数组中的位置相同。发生这种情况是因为我们没有为添加到集合中的元素定义任何位置。但在我们方法的第二部分中,使用索引添加元素。在这种情况下,元素将添加到集合中指定的确切位置。当一个新元素被添加到集合的中间时ArrayList
,该集合中已经存在的、位于新元素指定插入位置之外的元素将被移动到它们自己的后续位置,从而增加集合的大小。 当我们首先查看输出时,我们会看到:
Total No of Characters in List: 10
Total No of Characters in Array: 8
这是因为除了添加到 的数组有 8 个元素之外ArrayList
,我们还显式添加了 2 个元素,从而将集合的大小增加到 10。该方法getCharacterPosition(args)
获取元素的值(人名)并显示位置该元素在集合中的位置ArrayList
。如果 中没有这样的元素ArrayList
,则显示值-1。该方法removeCharacter(args)
从集合中删除指定的元素值(人名),并将该元素的索引或元素本身作为参数。在上面的代码中,我们可以注意到,由于我们从集合中删除了 2 个元素,集合的大小已变为 8,而不是 10。 如果数组和集合的大小相同,则该方法返回以下行:
The element Harry cannot be removed
The element Dumbledore cannot be removed
该方法的执行removeCharacter(args)
仅以集合的大小必须大于数组的大小为条件。示例 2. 在此示例中,我们将使用类(集合)编写一个简单的程序Vector
清单 2. 示例 2 的执行代码
// подключаем класс
import java.util.Vector;
public class VectorExample {
Vector vector=new Vector();
public void addCharacterandPrint(){
vector.add("Weasley");
vector.add("Potter");
for(int i=0;i<vector.size();i++){
System.out.println("The characters are\t"+vector.get(i));
}
}
public static void main(String args[]){
VectorExample example=new VectorExample();
example.addCharacterandPrint();
}
}
运行该程序将产生以下输出:
The characters are Weasley
The characters are Potter
上面的代码只是一个小示例,提供作为证明集合ArrayList
和Vector
. Vector
可以使用相同的方法以与集合相同的方式操作集合ArrayList
。示例 3. 在本示例中,我们将使用集合类编写一个简单的程序HashMap
清单 3. 示例 3 的执行代码
// подключаем класс
import java.util.HashMap;
public class HashMapExample {
HashMap hashMap=new HashMap();
String Books[]={"Famous Five","Goosebumps","Robinson Crusueo","Nancy Drew","The Cell","The Davinci Code","Harry Potter"};
public void mapAuthors(){
hashMap.put("Famous Five","Enid Blyton");
hashMap.put("Goosebumps","R.L.Stine");
hashMap.put("Nancy Drew","Carolyn Keene");
hashMap.put("The Cell","Christopher Pike");
hashMap.put("The Davinci Code","Dan Brown");
hashMap.put("Harry Potter","J.K. Rowling");
}
public void getBookList(){
for(int i=0;i<Books.length;i++){
if(hashMap.containsKey(Books[i])){
System.out.println("Author"+(i+1)+":\t"+hashMap.get(Books[i])+"\t"+Books[i]);
}
else{
System.out.println("\nThe Imformation about the author of the book\t"+Books[i]+"\tis not available\n");
}
}
}
public static void main(String args[]){
HashMapExample hashMapExample=new HashMapExample();
hashMapExample.mapAuthors();
hashMapExample.getBookList();
}
}
运行该程序将产生以下输出:
Author1: Enid Blyton Famous Five
Author2: R.L.Stine Goosebumps
The Information about the author of the book Robinson Crusueo is not available
Author4: Carolyn Keene Nancy Drew
Author5: Christopher Pike The Cell
Author6: Dan Brown The Davinci Code
Author7: J.K. Rowling Harry Potter
让我们一步步看一下上面的代码。在这个示例程序中,我们有一个字符串数组,其元素是名著的名称。该方法mapAuthors()
创建书名及其作者的显示。这里的键是书名,值是那些书的作者。当调用该方法时getBookList()
,它会遍历数组Books
并一一获取书名。接下来,该方法检查任何书籍是否有自己的作者。正如我们所看到的,如果该方法找不到该书的作者,则会显示该消息not available
。否则,作者和他的书都会一一展示。 结论: 在本文中,我们研究了一些关于类 - 集合ArrayList
、 、的知识Vector
,HashMap
并尝试在我们自己的代码中使用它们。原文:如何使用Java Collections Framework提供的ArrayList、Vector和HashMap类
GO TO FULL VERSION