Rate this post

Bất kỳ nhóm các object riêng lẻ nào được biểu diễn dưới dạng một đơn vị được gọi là tập hợp các object. Trong Java, một Framework riêng biệt có tên là “Collection Framework” đã được định nghĩa trong JDK 1.2 chứa tất cả các Class collection và interface trong đó.

Các bài viết liên quan:

interface collection (java.util.Collection) và interface Map (java.util.Map) là hai interface “gốc” chính của các Class collection Java.

Framework là gì?

Framework là một tập hợp các Class và interface cung cấp kiến trúc được tạo sẵn. Để triển khai một tính năng mới hoặc một Class, không cần xác định Framework. Tuy nhiên, một thiết kế hướng object tối ưu luôn bao gồm một Framework với một tập hợp các Class sao cho tất cả các Class thực hiện cùng một loại tác vụ.

Cần một Framework Collection riêng

Trước khi Framework collection (hoặc trước JDK 1.2) được giới thiệu, các phương pháp tiêu chuẩn để nhóm các object Java (hoặc collection) là Mảng hoặc Vectơ hoặc Bảng băm. Tất cả các collection này không có interface chung. Do đó, mặc dù mục đích chính của tất cả các collection là như nhau, nhưng việc triển khai tất cả các collection này được xác định độc lập và không có mối tương quan giữa chúng. Ngoài ra, người dùng rất khó nhớ tất cả các phương thức, cú pháp và hàm tạo khác nhau có trong mọi Class collection.

Hãy hiểu điều này với một ví dụ về việc thêm một phần tử trong một hashtable và một vector.

// Java program to demonstrate
// why collection framework was needed
import java.io.*;
import java.util.*;

class CollectionDemo {

	public static void main(String[] args)
	{
		// tao instances cua array,
		// vector va hashtable
		int arr[] = new int[] { 1, 2, 3, 4 };
		Vector<Integer> v = new Vector();
		Hashtable<Integer, String> h = new Hashtable();

		// them elements vao vector
		v.addElement(1);
		v.addElement(2);

		// them elements vao hashtable
		h.put(1, "hashtable1");
		h.put(2, "hashtable2");

		//in gia tri
		System.out.println(arr[0]);
		System.out.println(v.elementAt(0));
		System.out.println(h.get(1));
	}
}

Như chúng ta có thể quan sát, không có collection nào trong số này (Array, Vector hoặc Hashtable) triển khai interface truy cập thành viên tiêu chuẩn, rất khó để lập trình viên viết thuật toán có thể hoạt động cho tất cả các loại collection. Một nhược điểm khác là hầu hết các phương thức ‘Vector’ là cuối cùng, nghĩa là chúng ta không thể mở rộng Class ‘Vector’ để triển khai một loại collection tương tự. Do đó, các nhà phát triển Java đã quyết định đưa ra một interface chung để giải quyết các vấn đề nêu trên và giới thiệu Framework collection trong bài đăng JDK 1.2 mà cả Vector kế thừa và Bảng băm đã được sửa đổi để phù hợp với Framework collection.

Ưu điểm của Framework Collection

Vì việc thiếu Framework Collection đã dẫn đến các nhược điểm nêu trên, sau đây là những ưu điểm của Framework Collection.

Consistent API: API có một bộ interface cơ bản như collection, Tập hợp, Danh sách hoặc Bản đồ, tất cả các Class (ArrayList, LinkedList, Vector, v.v.) triển khai các interface này đều có một số bộ phương thức chung.

Reduces programming effort: Một lập trình viên không phải lo lắng về thiết kế của collection mà thay vào đó, anh ta có thể tập trung vào việc sử dụng nó tốt nhất trong chương trình của mình. Do đó, khái niệm cơ bản về lập trình hướng object (tức là) trừu tượng hóa đã được triển khai thành công.

Increases program speed and quality: Tăng hiệu suất bằng cách cung cấp triển khai hiệu suất cao các cấu trúc dữ liệu và thuật toán hữu ích vì trong trường hợp này, lập trình viên không cần nghĩ đến cách triển khai tốt nhất cấu trúc dữ liệu cụ thể. Anh ta có thể chỉ cần sử dụng cách triển khai tốt nhất để tăng đáng kể hiệu suất của thuật toán/chương trình của mình.

Hệ thống phân cấp của Framework Collection

Gói tiện ích, (java.util) chứa tất cả các Class và interface được Framework collection yêu cầu. Framework collection chứa một interface có tên là interface có thể lặp lại cung cấp trình vòng lặp để lặp qua tất cả các collection. interface này được mở rộng bởi interface collection chính hoạt động như gốc cho Framework collection. Tất cả các collection mở rộng interface collection này do đó mở rộng các thuộc tính của trình vòng lặp và các phương thức của interface này. Hình dưới đây minh họa hệ thống phân cấp của Framework collection.

Trước khi hiểu các thành phần khác nhau trong Framework trên, trước tiên hãy hiểu một Class và một interface.

Class: Một Class là một kế hoạch chi tiết hoặc nguyên mẫu do người dùng định nghĩa mà từ đó các object được tạo ra. Nó đại diện cho tập hợp các thuộc tính hoặc phương thức chung cho tất cả các object của một loại.

Interface: Giống như một Class, một interface có thể có các phương thức và biến, nhưng các phương thức được khai báo trong một interface theo mặc định là trừu tượng (chỉ có chữ ký phương thức, không có phần thân). Các interface xác định những gì một Class phải làm và không làm như thế nào. Nó là kế hoạch chi tiết của Class học.

Các phương thức của interface collection

interface này chứa các phương thức khác nhau có thể được sử dụng trực tiếp bởi tất cả các collection triển khai interface này. Họ đang:

  • add(Object) Phương thức này được sử dụng để thêm một object vào collection.
  • addAll(Collection c) Phương thức này thêm tất cả các phần tử trong tập hợp đã cho vào tập hợp này.
  • clear() Phương thức này loại bỏ tất cả các phần tử khỏi collection này.
  • contains(Object o) Phương thức này trả về true nếu collection chứa phần tử đã chỉ định.
  • containsAll(Collection c) Phương thức này trả về true nếu collection chứa tất cả các phần tử trong collection đã cho.
  • equals(Object o) Phương thức này so sánh object đã chỉ định với collection này để tìm sự bằng nhau.
  • hashCode() Phương thức này được sử dụng để trả về giá trị mã băm cho collection này.
  • isEmpty() Phương thức này trả về true nếu collection này không chứa phần tử nào.
  • iterator() Phương thức này trả về một trình lặp trên các phần tử trong collection này.
  • max() Phương thức này được sử dụng để trả về giá trị lớn nhất có trong tập hợp.
  • parallelStream() Phương thức này trả về một Luồng song song với collection này làm nguồn của nó.
  • remove(Object o) Phương thức này được sử dụng để xóa object đã cho khỏi collection. Nếu có các giá trị trùng lặp thì phương thức này sẽ loại bỏ lần xuất hiện đầu tiên của object.
  • removeAll(Collection c) Phương thức này được sử dụng để xóa tất cả các object được đề cập trong collection đã cho khỏi collection.
  • removeIf(Predicate filter) Phương thức này được sử dụng để loại bỏ tất cả các phần tử của tập hợp này thỏa mãn vị từ đã cho.
  • keepAll(Collection c) Phương thức này được sử dụng để chỉ giữ lại các phần tử trong collection này được chứa trong collection đã chỉ định.
  • size() Phương thức này được sử dụng để trả về số phần tử trong tập hợp.
  • spliterator() Phương thức này được sử dụng để tạo Spliterator trên các phần tử trong collection này.
  • stream() Phương thức này được sử dụng để trả về một Luồng tuần tự với collection này làm nguồn của nó.
  • toArray() Phương thức này được sử dụng để trả về một mảng chứa tất cả các phần tử trong collection này.

Các interface mở rộng interface collection

Framework collection chứa nhiều interface trong đó mọi interface được sử dụng để lưu trữ một loại dữ liệu cụ thể. Sau đây là các interface có trong khuôn khổ.

interface Iterable: Đây là interface gốc cho toàn bộ Framework collection. interface collection mở rộng interface có thể lặp lại. Do đó, vốn dĩ, tất cả các interface và Class đều thực hiện interface này. Chức năng chính của interface này là cung cấp một trình vòng lặp cho các collection. Do đó, interface này chỉ chứa một phương thức trừu tượng là iterator. Nó trả về

Iterator iterator()

interface collection: interface này mở rộng interface có thể lặp lại và được triển khai bởi tất cả các Class trong Framework collection. interface này chứa tất cả các phương thức cơ bản mà mọi collection đều có như thêm dữ liệu vào collection, xóa dữ liệu, xóa dữ liệu, v.v. Tất cả các phương thức này được triển khai trong interface này vì các phương thức này được triển khai bởi tất cả các Class bất kể kiểu của chúng của việc thực hiện. Ngoài ra, việc có các phương thức này trong interface này đảm bảo rằng tên của các phương thức là chung cho tất cả các collection. Do đó, trong ngắn hạn, chúng ta có thể nói rằng interface này xây dựng một nền tảng mà trên đó các Class tập hợp được triển khai.

List Interface: Đây là interface con của interface collection. interface này dành riêng cho dữ liệu của loại danh sách, trong đó chúng ta có thể lưu trữ tất cả collection các object được sắp xếp theo thứ tự. Điều này cũng cho phép dữ liệu trùng lặp có mặt trong đó. interface danh sách này được triển khai bởi nhiều Class khác nhau như ArrayList, Vector, Stack, v.v. Vì tất cả các Class con đều triển khai danh sách, nên chúng ta có thể khởi tạo một object danh sách với bất kỳ Class nào trong số này. Ví dụ,

List <T> al = new ArrayList<> (); 
List <T> ll = new LinkedList<> (); 
List <T> v = new Vector<> ();  

Các Class triển khai interface Danh sách như sau:

  1. ArrayList: ArrayList cung cấp cho chúng ta mảng động trong Java. Mặc dù, nó có thể chậm hơn so với mảng tiêu chuẩn nhưng có thể hữu ích trong các chương trình cần nhiều thao tác trong mảng. Kích thước của ArrayList được tự động tăng lên nếu collection tăng lên hoặc thu hẹp lại nếu các object bị xóa từ collection. Java ArrayList cho phép chúng ta truy cập ngẫu nhiên vào danh sách. ArrayList không thể được sử dụng cho các kiểu nguyên thủy, như int, char, v.v. Chúng ta sẽ cần một Class bao bọc cho những trường hợp như vậy. Hãy hiểu ArrayList với ví dụ sau:
import java.io.*;
import java.util.*;

class GFG {

	// ham main
	public static void main(String[] args)
	{

		// khai bao ArrayList voi size n
		ArrayList<Integer> al = new ArrayList<Integer>();
		// them new elements vao duoi danh sach
		for (int i = 1; i <= 5; i++)
			al.add(i);

		// in elements
		System.out.println(al);

		// xoa element tai index 3
		al.remove(3);
		System.out.println(al);

		// in elements tung phan 1
		for (int i = 0; i < al.size(); i++)
			System.out.print(al.get(i) + " ");
	}
}

  1. LinkedList: Class LinkedList là một triển khai của cấu trúc dữ liệu LinkedList, đây là cấu trúc dữ liệu tuyến tính trong đó các phần tử không được lưu trữ ở các vị trí liền kề và mỗi phần tử là một object riêng biệt với phần dữ liệu và phần địa chỉ. Các phần tử được liên kết bằng con trỏ và địa chỉ. Mỗi phần tử được gọi là một nút. Hãy hiểu LinkedList với ví dụ sau:
// Java program to demonstrate the
// working of LinkedList
import java.io.*;
import java.util.*;

class GFG {

	// Main Method
	public static void main(String[] args)
	{

		// Declaring the LinkedList
		LinkedList<Integer> ll = new LinkedList<Integer>();

		// Appending new elements at
		// the end of the list
		for (int i = 1; i <= 5; i++)
			ll.add(i);

		// Printing elements
		System.out.println(ll);

		// Remove element at index 3
		ll.remove(3);

		// Displaying the List
		// after deletion
		System.out.println(ll);

		// Printing elements one by one
		for (int i = 0; i < ll.size(); i++)
			System.out.print(ll.get(i) + " ");
	}
}
  1. Vector: Vector cung cấp cho chúng ta mảng động trong Java. Mặc dù, nó có thể chậm hơn so với mảng tiêu chuẩn nhưng có thể hữu ích trong các chương trình cần nhiều thao tác trong mảng. Điều này giống với ArrayList về mặt triển khai. Tuy nhiên, sự khác biệt chính giữa một vectơ và một ArrayList là một Vector được đồng bộ hóa và một ArrayList không được đồng bộ hóa. Hãy hiểu Vector bằng một ví dụ:
// Java program to demonstrate the
// working of Vector
import java.io.*;
import java.util.*;

class GFG {

	// Main Method
	public static void main(String[] args)
	{

		// Declaring the Vector
		Vector<Integer> v = new Vector<Integer>();

		// Appending new elements at
		// the end of the list
		for (int i = 1; i <= 5; i++)
			v.add(i);

		// Printing elements
		System.out.println(v);

		// Remove element at index 3
		v.remove(3);

		// Displaying the Vector
		// after deletion
		System.out.println(v);

		// Printing elements one by one
		for (int i = 0; i < v.size(); i++)
			System.out.print(v.get(i) + " ");
	}
}

  1. Stack: Xếp chồng các mô hình Class và thực hiện cấu trúc dữ liệu Ngăn xếp. Class học dựa trên nguyên tắc cơ bản là vào trước ra trước. Ngoài các thao tác đẩy và bật cơ bản, Class này cung cấp thêm ba chức năng trống, tìm kiếm và xem nhanh. Class này cũng có thể được gọi là Class con của Vector. Hãy hiểu ngăn xếp với một ví dụ:
// Java program to demonstrate the
// working of a stack
import java.util.*;
public class GFG {

	// Main Method
	public static void main(String args[])
	{
		Stack<String> stack = new Stack<String>();
		stack.push("Geeks");
		stack.push("For");
		stack.push("Geeks");
		stack.push("Geeks");

		// Iterator for the stack
		Iterator<String> itr = stack.iterator();

		// Printing the stack
		while (itr.hasNext()) {
			System.out.print(itr.next() + " ");
		}

		System.out.println();

		stack.pop();

		// Iterator for the stack
		itr = stack.iterator();

		// Printing the stack
		while (itr.hasNext()) {
			System.out.print(itr.next() + " ");
		}
	}
}

Lưu ý: Stack là Class con của Vector và là Class kế thừa. Đó là luồng an toàn có thể ở trên cao trong môi trường không cần đến sự an toàn của luồng. Một giải pháp thay thế cho Stack là sử dụng ArrayDequeue không an toàn cho luồng và có mảng nhanh hơn.

Queue Interface: Như tên gợi ý, interface hàng đợi duy trì thứ tự FIFO (Vào trước ra trước) tương tự như một hàng đợi trong thế giới thực. interface này được dành riêng để lưu trữ tất cả các phần tử trong đó thứ tự của các phần tử quan trọng. Ví dụ: bất cứ khi nào chúng tôi cố gắng đặt vé, vé sẽ được bán trên cơ sở ai đến trước được phục vụ trước. Do đó, người có yêu cầu đến đầu tiên trong hàng đợi sẽ nhận được vé. Có nhiều Class khác nhau như PriorityQueue, ArrayDeque, v.v. Vì tất cả các Class con này đều triển khai hàng đợi, nên chúng ta có thể khởi tạo một object hàng đợi với bất kỳ Class nào trong số này. Ví dụ,

Queue <T> pq = new PriorityQueue<> (); 
Queue <T> ad = new ArrayDeque<> (); 
Where T is the type of the object.  

Trong đó T là loại object.

Việc triển khai interface hàng đợi được sử dụng thường xuyên nhất là PriorityQueue.

Priority Queue: Hàng đợi ưu tiên được sử dụng khi các object được cho là được xử lý dựa trên mức độ ưu tiên. Được biết, một hàng đợi tuân theo thuật toán Nhập trước xuất trước, nhưng đôi khi các phần tử của hàng đợi cần được xử lý theo mức độ ưu tiên và Class này được sử dụng trong những trường hợp này. PriorityQueue dựa trên vùng ưu tiên. Các phần tử của hàng đợi ưu tiên được sắp xếp theo thứ tự tự nhiên hoặc theo Bộ so sánh được cung cấp tại thời điểm xây dựng hàng đợi, tùy thuộc vào hàm tạo nào được sử dụng. Hãy hiểu hàng đợi ưu tiên với một ví dụ:

// Java program to demonstrate the working of
// priority queue in Java
import java.util.*;

class GfG {

	// Main Method
	public static void main(String args[])
	{
		// Creating empty priority queue
		PriorityQueue<Integer> pQueue = new PriorityQueue<Integer>();

		// Adding items to the pQueue using add()
		pQueue.add(10);
		pQueue.add(20);
		pQueue.add(15);

		// Printing the top element of PriorityQueue
		System.out.println(pQueue.peek());

		// Printing the top element and removing it
		// from the PriorityQueue container
		System.out.println(pQueue.poll());

		// Printing the top element again
		System.out.println(pQueue.peek());
	}
}

interface Deque: Đây là một biến thể rất nhỏ của cấu trúc dữ liệu hàng đợi. Deque, còn được gọi là hàng đợi hai đầu, là một cấu trúc dữ liệu nơi chúng ta có thể thêm và xóa các phần tử ở cả hai đầu của hàng đợi. interface này mở rộng interface hàng đợi. Class cài đặt interface này là ArrayDeque. Vì Class ArrayDeque triển khai interface Deque nên chúng ta có thể khởi tạo một object deque với Class này. Ví dụ,

Deque<T> ad = new ArrayDeque<> (); 

Trong đó T là loại object.

Class cài đặt interface deque là ArrayDeque.

ArrayDeque: Class ArrayDeque được triển khai trong Framework collection cung cấp cho chúng tôi cách áp dụng mảng có thể thay đổi kích thước. Đây là một loại mảng đặc biệt phát triển và cho phép người dùng thêm hoặc bớt một phần tử từ cả hai phía của hàng đợi. Các deque mảng không có hạn chế về dung lượng và chúng phát triển khi cần thiết để hỗ trợ việc sử dụng. Hãy hiểu ArrayDeque với một ví dụ:

// Java program to demonstrate the
// ArrayDeque class in Java

import java.util.*;
public class ArrayDequeDemo {
	public static void main(String[] args)
	{
		// Initializing an deque
		ArrayDeque<Integer> de_que = new ArrayDeque<Integer>(10);

		// add() method to insert
		de_que.add(10);
		de_que.add(20);
		de_que.add(30);
		de_que.add(40);
		de_que.add(50);

		System.out.println(de_que);

		// clear() method
		de_que.clear();

		// addFirst() method to insert the
		// elements at the head
		de_que.addFirst(564);
		de_que.addFirst(291);

		// addLast() method to insert the
		// elements at the tail
		de_que.addLast(24);
		de_que.addLast(14);

		System.out.println(de_que);
	}
}

 Set Interface: Tập hợp là một tập hợp các object không có thứ tự trong đó không thể lưu trữ các giá trị trùng lặp. collection này được sử dụng khi chúng tôi muốn tránh sự trùng lặp của các object và chỉ muốn lưu trữ các object duy nhất. interface tập hợp này được triển khai bởi nhiều Class khác nhau như HashSet, TreeSet, LinkedHashSet, v.v. Vì tất cả các Class con triển khai tập hợp, chúng ta có thể khởi tạo một object tập hợp với bất kỳ Class nào trong số này. Ví dụ,

Set<T> hs = new HashSet<> (); 
Set<T> lhs = new LinkedHashSet<> (); 
Set<T> ts = new TreeSet<> (); 

Trong đó T là loại object.

Sau đây là các Class triển khai interface Set:

A. HashSet: Class HashSet là một triển khai vốn có của cấu trúc dữ liệu bảng băm. Các object mà chúng ta chèn vào HashSet không đảm bảo được chèn theo cùng một thứ tự. Các object được chèn dựa trên mã băm của chúng. Class này cũng cho phép chèn các phần tử NULL. Hãy hiểu HashSet với một ví dụ:

// Java program to demonstrate the
// working of a HashSet
import java.util.*;

public class HashSetDemo {

	// Main Method
	public static void main(String args[])
	{
		// Creating HashSet and
		// adding elements
		HashSet<String> hs = new HashSet<String>();

		hs.add("Geeks");
		hs.add("For");
		hs.add("Geeks");
		hs.add("Is");
		hs.add("Very helpful");

		// Traversing elements
		Iterator<String> itr = hs.iterator();
		while (itr.hasNext()) {
			System.out.println(itr.next());
		}
	}
}

B. LinkedHashSet: LinkedHashSet rất giống với HashSet. Sự khác biệt là điều này sử dụng một danh sách liên kết kép để lưu trữ dữ liệu và giữ nguyên thứ tự của các phần tử. Hãy hiểu LinkedHashSet với một ví dụ:

// Java program to demonstrate the
// working of a LinkedHashSet
import java.util.*;

public class LinkedHashSetDemo {

	// Main Method
	public static void main(String args[])
	{
		// Creating LinkedHashSet and
		// adding elements
		LinkedHashSet<String> lhs = new LinkedHashSet<String>();

		lhs.add("Geeks");
		lhs.add("For");
		lhs.add("Geeks");
		lhs.add("Is");
		lhs.add("Very helpful");

		// Traversing elements
		Iterator<String> itr = lhs.iterator();
		while (itr.hasNext()) {
			System.out.println(itr.next());
		}
	}
}

Sorted Set Interface: interface này rất giống với interface tập hợp. Sự khác biệt duy nhất là interface này có các phương thức bổ sung để duy trì thứ tự của các phần tử. interface tập hợp được sắp xếp mở rộng interface tập hợp và được sử dụng để xử lý dữ liệu cần được sắp xếp. Class thực hiện interface này là TreeSet. Vì Class này triển khai SortedSet nên chúng ta có thể khởi tạo một object SortedSet với Class này. Ví dụ,

SortedSet<T> ts = new TreeSet<> (); 

Trong đó T là loại object.

Class thực hiện interface tập hợp được sắp xếp là TreeSet.

TreeSet: Class TreeSet sử dụng Cây để lưu trữ. Thứ tự của các phần tử được duy trì bởi một tập hợp sử dụng thứ tự tự nhiên của chúng cho dù có cung cấp bộ so sánh rõ ràng hay không. Điều này phải phù hợp với bằng nếu nó triển khai đúng interface Set. Nó cũng có thể được sắp xếp bởi một Bộ so sánh được cung cấp tại thời điểm tạo đã đặt, tùy thuộc vào hàm tạo nào được sử dụng. Hãy hiểu TreeSet với một ví dụ:

// Java program to demonstrate the
// working of a TreeSet
import java.util.*;

public class TreeSetDemo {

	// Main Method
	public static void main(String args[])
	{
		// Creating TreeSet and
		// adding elements
		TreeSet<String> ts = new TreeSet<String>();

		ts.add("Geeks");
		ts.add("For");
		ts.add("Geeks");
		ts.add("Is");
		ts.add("Very helpful");

		// Traversing elements
		Iterator<String> itr = ts.iterator();
		while (itr.hasNext()) {
			System.out.println(itr.next());
		}
	}
}

 Map Interface: Bản đồ là cấu trúc dữ liệu hỗ trợ cặp khóa-giá trị để ánh xạ dữ liệu. interface này không hỗ trợ các khóa trùng lặp vì cùng một khóa không thể có nhiều ánh xạ, tuy nhiên, interface này cho phép các giá trị trùng lặp trong các khóa khác nhau. Bản đồ rất hữu ích nếu có dữ liệu và chúng tôi muốn thực hiện các thao tác trên cơ sở khóa. interface bản đồ này được triển khai bởi nhiều Class khác nhau như HashMap, TreeMap, v.v. Vì tất cả các Class con đều triển khai bản đồ, nên chúng ta có thể khởi tạo một object bản đồ với bất kỳ Class nào trong số này. Ví dụ,

Map<T> hm = new HashMap<> (); 
Map<T> tm = new TreeMap<> ();

Trong đó T là loại object.

Việc triển khai interface Bản đồ được sử dụng thường xuyên là HashMap.

HashMap: HashMap cung cấp triển khai cơ bản cho interface Bản đồ của Java. Nó lưu trữ dữ liệu theo cặp (Khóa, Giá trị). Để truy cập một giá trị trong HashMap, chúng ta phải biết khóa của nó. HashMap sử dụng một kỹ thuật gọi là Băm. Hashing là kỹ thuật chuyển đổi một String lớn thành một String nhỏ đại diện cho cùng một String để các thao tác lập chỉ mục và tìm kiếm được nhanh hơn. HashSet cũng sử dụng HashMap trong nội bộ. Hãy hiểu HashMap với một ví dụ:

// Java program to demonstrate the
// working of a HashMap
import java.util.*;

public class HashMapDemo {

	// Main Method
	public static void main(String args[])
	{
		// Creating HashMap and
		// adding elements
		HashMap<Integer, String> hm = new HashMap<Integer, String>();

		hm.put(1, "Geeks");
		hm.put(2, "For");
		hm.put(3, "Geeks");

		// Finding the value for a key
		System.out.println("Value for 1 is " + hm.get(1));

		// Traversing through the HashMap
		for (Map.Entry<Integer, String> e : hm.entrySet())
			System.out.println(e.getKey() + " " + e.getValue());
	}
}

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now