ในบทความนี้ เราจะเรียนรู้เกี่ยวกับคลาสคอลเลกชันที่สำคัญสามคลาสArrayList , VectorและHashMapจากCollections Frameworkและเริ่มใช้งานคลาสเหล่านี้ในโค้ดของเราเอง การใช้คลาสการรวบรวม
ArrayList
และ การรวบรวม Vector
เราสามารถจัดเก็บกลุ่มขององค์ประกอบเป็นวัตถุอย่างง่าย และจัดการโดยใช้วิธีการต่าง ๆ ที่มีอยู่ในคลาสเหล่านี้ ชั้นเรียนArrayList
และ มี จำหน่ายVector
ตั้งแต่แพ็คเกจ java.util
อีกคลาสหนึ่งคือคอลเลกชันที่หาได้จากแพ็คเกจjava.util
ซึ่งHashMap
ช่วยให้คุณสามารถจัดเก็บคอลเลกชันของการแมปคีย์-ค่าได้ ซึ่งทำให้สามารถรับค่าที่ต้องการจากคอลเลกชันได้เมื่อทราบคีย์ ลองดูตัวอย่างโดยใช้คลาสคอลเลกชันเหล่านี้ทีละรายการ ตัวอย่างที่ 1 ในตัวอย่างนี้ เราจะเขียนโปรแกรมอย่างง่ายโดยใช้คลาส - ArrayList collection Listing 1 โค้ดดำเนินการตัวอย่างที่ 1
// подключаем класс
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
มาดูตัวอย่างโปรแกรมที่ให้มาทีละขั้นตอนกัน ArrayList
ในตัวอย่าง นี้ในบรรทัดแรกของโปรแกรม เรานำเข้า class - collection จากนั้น เราผลัดกันเริ่มต้นอาร์เรย์ของสตริง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)
ลบค่าองค์ประกอบที่ระบุ (ชื่อของบุคคล) ออกจากคอลเลกชัน โดยใช้เป็นอาร์กิวเมนต์ดัชนีขององค์ประกอบนั้นหรือองค์ประกอบนั้นเอง ในโค้ดด้านบน เราจะสังเกตเห็นว่าขนาดของคอลเลกชันของเรากลายเป็น 8 แทนที่จะเป็น 10 เนื่องจากเราได้ลบ 2 องค์ประกอบออกจากคอลเลกชัน หากขนาดของอาร์เรย์และคอลเลกชันเท่ากัน ดังนั้นเมธอดจะส่งกลับบรรทัดต่อไปนี้:
The element Harry cannot be removed
The element Dumbledore cannot be removed
การดำเนินการของเมธอดremoveCharacter(args)
จะถูกกำหนดเงื่อนไขโดยข้อเท็จจริงที่ว่าขนาดของคอลเลกชันต้องมากกว่าขนาดของอาร์เรย์เท่านั้น ตัวอย่างที่ 2 ในตัวอย่างนี้เราจะเขียนโปรแกรมอย่างง่ายโดยใช้คลาส - คอลเลกชั่นVector
Listing 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
Listing 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
ดังที่เราเห็น หากวิธีการไม่พบผู้ แต่งหนังสือ ข้อความก็จะปรากฏขึ้น มิฉะนั้น ผู้แต่งและหนังสือของเขาจะแสดงทีละเล่ม สรุป: ในบทความนี้ เราได้ศึกษาเพียงเล็กน้อยเกี่ยวกับคลาส - collections ArrayList
และVector
พยายามHashMap
ใช้ในโค้ดของเราเอง บทความต้นฉบับ: วิธีใช้คลาส ArrayList, Vector และ HashMap ที่จัดทำโดย Java Collections Framework
GO TO FULL VERSION