ที่มา: Dev.to สวัสดีเพื่อนนักพัฒนาทั้งหลาย ฉันได้รวบรวมรายการคำถามพื้นฐานในการสัมภาษณ์ Java ที่ผู้เขียนโค้ดทุกคนควรรู้แล้ว
1. วิธีย้อนกลับสตริงใน Java โดยไม่ใช้วิธีย้อนกลับ ()
คำตอบ:ไม่มี วิธีการ Reverse() มาตรฐานใน Java แม้ว่า วิธีการ Reverse() จะมีอยู่ใน หลายไลบรารี เช่นStringBufferหรือStringBuilder ดังนั้นคำถามเรื่องการกลับรายการอาร์เรย์จึงเกิดขึ้นบ่อยมากในการสัมภาษณ์ ด้านล่างนี้เป็นอัลกอริธึมง่ายๆ ที่สามารถใช้เพื่อกลับอาร์เรย์public class StringReverse {
public static void main(String[] args) {
String str = "Flexiple";
System.out.println(reverse(str));
}
public static String reverse(String in) {
if (in == null)
throw new IllegalArgumentException("Null is not valid");
StringBuilder out = new StringBuilder();
char[] chars = in.toCharArray();
for (int i = chars.length - 1; i >= 0; i--)
out.append(chars[i]);
return out.toString();
}
}
2. เขียนข้อมูลโค้ดเพื่อใช้ลำดับ Fibonacci โดยใช้การเรียกซ้ำ
คำตอบ:ข้อมูลโค้ดด้านล่างนี้ใช้ลำดับฟีโบนักชีโดยใช้การเรียกซ้ำ คำถามนี้พบได้ทั่วไปในการสัมภาษณ์ Javapublic class FibonacciNumbers {
public static int fibonacci(int n) {
if (n <= 1)
return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
public static void main(String args[]) {
int n = 10;
System.out.println(fibonacci(n));
}
}
3. คุณจะลบช่องว่างออกจากสตริงใน Java ได้อย่างไร?
คำตอบ:วิธีการstrip()เป็นวิธีสตริงที่จะลบช่องว่างนำหน้าและต่อท้ายทั้งหมด Strip() ใช้เมธอด Character.isWhitespace()ภายในเพื่อตรวจสอบช่องว่าง โดยตรวจจับช่องว่างโดยใช้อักขระ Unicodes และเป็นวิธีที่แนะนำในการลบช่องว่าง สามารถใช้ วิธีอื่นstripLeading()และstripTrailing()ได้ จะช่วยได้ถ้าคุณต้องการลบเฉพาะช่องว่างนำหน้าหรือต่อท้ายตามลำดับ โค้ดด้านล่างเป็นตัวอย่างของการใช้วิธี การ strip()String s = " flexiple ";
s = s.strip();
System.out.println(s);
4. อะไรเป็นสาเหตุของสถานการณ์การหยุดชะงัก? เขียนโค้ดเพื่อสร้างการหยุดชะงัก
คำตอบ:สถานการณ์การชะงักงันเกิดขึ้นเมื่อเธรดสองตัวจำเป็นต้องล็อกเดียวกันเพื่อดำเนินการ สถานการณ์เหล่านี้เกิดขึ้นเมื่อเธรดทั้งสองได้รับการล็อคหนึ่งอัน และกำลังรอรับการล็อคอื่น อย่างไรก็ตาม เนื่องจากทั้งสองเธรดกำลังรอให้อีกเธรดดำเนินการ เธรดทั้งสองจึงบล็อกซึ่งกันและกัน ทำให้เกิดการหยุดชะงัก โปรแกรมแบบมัลติเธรดประสบปัญหาการหยุดชะงักเนื่องจากมีการใช้คำสำคัญที่ซิงโครไนซ์เพื่อทำให้เธรดเมธอดปลอดภัย ซึ่งหมายความว่ามีเพียงเธรดเดียวเท่านั้นที่สามารถบล็อกและใช้วิธีการซิงโครไนซ์ได้ เธรดอื่นต้องรอจนกว่าเธรดปัจจุบันจะเสร็จสมบูรณ์ โค้ดด้านล่างนี้สร้างเธรดสองเธรดที่ถูกล็อกตายclass Util
{
static void sleep(long millis)
{
try
{
Thread.sleep(millis);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
class Shared
{
synchronized void test1(Shared s2)
{
System.out.println("test1-begin");
Util.sleep(1000);
s2.test2();
System.out.println("test1-end");
}
synchronized void test2()
{
System.out.println("test2-begin");
Util.sleep(1000);
System.out.println("test2-end");
}
}
class Thread1 extends Thread
{
private Shared s1;
private Shared s2;
public Thread1(Shared s1, Shared s2)
{
this.s1 = s1;
this.s2 = s2;
}
@Override
public void run()
{
s1.test1(s2);
}
}
class Thread2 extends Thread
{
private Shared s1;
private Shared s2;
public Thread2(Shared s1, Shared s2)
{
this.s1 = s1;
this.s2 = s2;
}
@Override
public void run()
{
s2.test2(s1);
}
}
public class Deadlock
{
public static void main(String[] args)
{
Shared s1 = new Shared();
Shared s2 = new Shared();
Thread1 t1 = new Thread1(s1, s2);
t1.start();
Thread2 t2 = new Thread2(s1, s2);
t2.start();
Util.sleep(2000);
}
}
5. เขียนโค้ด Java เพื่อพิมพ์วันที่ในรูปแบบเฉพาะ
คำตอบ:คลาสSimpleDateFormatช่วยในการแปลงวันที่จากรูปแบบหนึ่งไปเป็นอีกรูปแบบหนึ่ง วิธีนี้ยังช่วยให้ผู้ใช้สามารถใช้รูปแบบสตริงวันที่และเปลี่ยนเป็นรูปแบบที่ต้องการได้ รหัสด้านล่างแปลงวันที่เป็นรูปแบบมาตรฐาน: วว/ดด/ปปปปimport java.text.SimpleDateFormat;
import java.util.Date;
public class CurrentDateTimeExample2 {
public static void main(String[] args) {
SimpleDateFormat formatter = new SimpleDateFormat("DD/MM/YYYY HH:mm:ss");
Date date = new Date();
System.out.println(formatter.format(date));
}
}
ข้อมูลโค้ดสำหรับแปลงวันที่เป็น MM/DD/YYYY:
import java.text.SimpleDateFormat;
import java.util.Date;
public class CurrentDateTimeExample2 {
public static void main(String[] args) {
SimpleDateFormat formatter = new SimpleDateFormat("MM/DD/YYYY HH:mm:ss");
Date date = new Date();
System.out.println(formatter.format(date));
}
}
6. จะเรียงลำดับ HashMap ตามค่าได้อย่างไร
คำตอบ: HashMapsใช้เพื่อสร้างอินเทอร์เฟซแผนที่ อนุญาตให้ผู้ใช้จัดเก็บคู่คีย์-ค่า แต่คีย์ต้องไม่ซ้ำกัน HashMapsไม่ได้ถูกเรียงลำดับคอลเลกชันและการเรียงลำดับมันไม่สมเหตุสมผล แต่เนื่องจากการเรียงลำดับแฮชแมปอาจค่อนข้างยุ่งยาก จึงเป็นคำถามที่พบบ่อยในการสัมภาษณ์ Java โค้ดด้านล่างแสดงการใช้งาน HashMapsimport java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class SortHashMap {
public static void main(String[] args) {
Map scores = new HashMap<>();
scores.put("John", 6);
scores.put("Carol", 8);
scores.put("Martin", 9);
scores.put("Mona", 7);
scores.put("Eric", 5);
System.out.println(scores);
scores = sortByValue(scores);
System.out.println(scores);
}
private static Map sortByValue(Map scores) {
Map sorted = new LinkedHashMap<>();
Set> entrySet = scores.entrySet();
System.out.println(entrySet);
List> entryList = new ArrayList<>(entrySet);
System.out.println(entryList);
entryList.sort((x, y) -> x.getValue().compareTo(y.getValue()));
System.out.println(entryList);
for (Entry e : entryList)
sorted.put(e.getKey(), e.getValue());
return sorted;
}
}
7. เมธอด forEach() มีไว้ทำอะไร? อธิบายด้วยตัวอย่าง
ตอบ: forEach()เป็นวิธีการที่ใช้ในการวนซ้ำวัตถุใน Java แต่แตกต่างจากลูปอื่น ที่นี่ตัวนับลูปไม่ได้ถูกประกาศหรือเตรียมใช้งาน แต่จะส่งผ่านตัวแปรเป็นการวนซ้ำได้ ดังนั้นforEach()จึงมักจะใช้กับอาร์เรย์หรือคลาสคอลเลกชัน ไวยากรณ์:for (type var : array)
{
statements using var;
}
ตัวอย่างการใช้forEach() :
class ExampleForEach
{
public static void main(String[] arg)
{
{
int[] scores = { 10, 13, 9, 11, 11};
int highest_score = maximum(scores);
System.out.println(highest_scores);
}
}
public static int maximum(int[] numbers)
{
int max = numbers[0];
// for each loop
for (int n : numbers)
{
if (n > max)
{
max = n;
}
}
return max;
}
}
8. อินเทอร์เฟซการทำงานคืออะไร และสร้างขึ้นอย่างไร?
คำตอบ:อินเทอร์เฟซที่มีวิธีนามธรรมเพียงวิธีเดียวเรียกว่าอินเทอร์เฟซการทำงาน ต่อมา อินเทอร์เฟซการทำงานสามารถมีได้เพียงฟังก์ชันเดียวเท่านั้น อย่างไรก็ตาม อาจมีวิธีการเริ่มต้นได้หลายวิธี ใน Java 8 สามารถใช้นิพจน์แลมบ์ดาเพื่อสร้างอินสแตนซ์อินเทอร์เฟซการทำงาน ทำให้สิ่งต่างๆ ง่ายขึ้นมาก ตัวอย่างของอินเทอร์เฟซการทำงาน: ActionListener , Comparable นี่คือรหัสที่ใช้ในการกำหนดอินเทอร์เฟซการทำงาน@FunctionalInterface
interface Foo {
void test();
}
9. อธิบายการโอเวอร์โหลดพร้อมตัวอย่าง
คำตอบ:การโอเวอร์โหลดเป็นกระบวนการในการแก้ไขหลายวิธีที่มีชื่อเดียวกัน แต่จะแตกต่างกันไปขึ้นอยู่กับลายเซ็น ประเภทข้อมูล หรือจำนวนพารามิเตอร์ การโอเวอร์โหลดทำให้ผู้ใช้สามารถใช้วิธีการเดียวซ้ำได้ แทนที่จะสร้างและจดจำหลายวิธี กล่าวโดยสรุป การโอเวอร์โหลดเกี่ยวข้องกับความหลากหลายเวลาคอมไพล์ ตัวอย่างโค้ดโอเวอร์โหลดวิธีการ:public class Sum {
public int sum(int x, int y)
{
return (x + y);
}
public int sum(int x, int y, int z)
{
return (x + y + z);
}
public double sum(double x, double y)
{
return (x + y);
}
public static void main(String args[])
{
Sum s = new Sum();
System.out.println(s.sum(10, 20));
System.out.println(s.sum(10, 20, 30));
System.out.println(s.sum(10.5, 20.5));
}
}
10. อธิบายการเอาชนะด้วยตัวอย่าง
คำตอบ:การแทนที่เป็นคุณลักษณะใน Java ที่อนุญาตให้คลาสย่อยหรือคลาสลูกจัดเตรียมการใช้งานแยกต่างหากสำหรับวิธีการที่มีอยู่ในคลาสพาเรนต์ เมื่อเมธอดในคลาสย่อยมีชื่อ พารามิเตอร์ และประเภทการส่งคืนเหมือนกับคลาสพาเรนต์ เมธอดนั้นจะแทนที่เมธอดในคลาสพาเรนต์ และเวอร์ชันของเมธอดที่ถูกเรียกใช้จะเป็นตัวกำหนดว่าเมธอดใดที่จะถูกดำเนินการ การเอาชนะเป็นวิธีหนึ่งในการบรรลุความหลากหลาย ณ รันไทม์ ตัวอย่างโค้ดแทนที่วิธีการ:class Parent {
void show()
{
System.out.println("Parent's show()");
}
}
class Child extends Parent {
@Override
void show()
{
System.out.println("Child's show()");
}
}
class Main {
public static void main(String[] args)
{
Parent obj1 = new Parent();
obj1.show();
Parent obj2 = new Child();
obj2.show();
}
}
11. การค้นหาแบบไบนารี่คืออะไร? สิ่งนี้ถูกนำไปใช้อย่างไร?
คำตอบ:อัลกอริธึมการค้นหาแบบไบนารี่ใช้เพื่อค้นหาค่าในอาร์เรย์ที่เรียงลำดับหรือประเภทคอลเลกชัน วิธีค้นหานี้เร็วกว่าวิธีค้นหาเชิงเส้นอย่างมาก การค้นหาแบบไบนารีจะแบ่งอาร์เรย์ออกเป็นชุดเล็กๆ จากนั้นใช้กฎเพื่อตรวจสอบคีย์อินพุต ขั้นตอนของการดำเนินการค้นหาแบบไบนารี (ไบนารี):- จัดเรียงอาร์เรย์จากน้อยไปหามาก
- ค้นหาค่าเฉลี่ยของอาร์เรย์และเปรียบเทียบกับคีย์
- ถ้าคีย์เท่ากับค่าเฉลี่ย ให้คืนค่าเป็นจริง
- หากเป็นเท็จ ให้ตรวจสอบว่าคีย์มีค่ามากกว่าหรือน้อยกว่าค่าเฉลี่ย
- ต่อไปขึ้นอยู่กับผลลัพธ์ ให้ตรวจสอบคีย์ในครึ่งบนหรือครึ่งล่างตามลำดับ
- วนซ้ำและเปรียบเทียบแต่ละค่าด้วยคีย์
import java.util.Scanner;
public class BinarySearch {
public static void main(String[] args) {
Scanner commandReader = new Scanner(System.in);
System.out.println("Enter total number of elements : ");
int length = commandReader.nextInt();
int[] input = new int[length];
System.out.printf("Enter %d integers %n", length);
for (int i = 0; i < length; i++) {
input[i] = commandReader.nextInt();
}
System.out.println("Please enter number to be searched in array
(sorted order)");
int key = commandReader.nextInt();
int index = performBinarySearch(input, key);
if (index == -1) {
System.out.printf("Sorry, %d is not found in array %n", key);
} else {
System.out.printf("%d is found in array at index %d %n", key,
index);
}
commandReader.close();
}
public static int performBinarySearch(int[] input, int number) {
int low = 0;
int high = input.length - 1;
while (high >= low) {
int middle = (low + high) / 2;
if (input[middle] == number) {
return middle;
} else if (input[middle] < number) {
low = middle + 1;
} else if (input[middle] > number) {
high = middle - 1;
}
}
return -1;
}
}
12. อะไรคือวิธีที่ดีที่สุดในการป้องกันการหยุดชะงักใน Java?
คำตอบ:- Nesting Locks: สาเหตุหลักของการหยุดชะงักคือเมื่อมีการส่งต่อการล็อคไปยังหลายเธรด การหลีกเลี่ยงการบล็อกหลายเธรดในกรณีที่เธรดที่มีบล็อกอยู่แล้วสามารถช่วยป้องกันการหยุดชะงักได้
- การใช้Thread.join() : การหยุดชะงักอาจเกิดขึ้นได้เมื่อเธรดกำลังรอทรัพยากรจากเธรดอื่น อย่างไรก็ตาม ในกรณีเช่นนี้Thread.join()สามารถใช้กับเวลาดำเนินการสูงสุดได้
- การใช้การล็อคเมื่อจำเป็นเท่านั้น: ฝึกใช้การล็อคเฉพาะกับองค์ประกอบเมื่อจำเป็นเท่านั้น การล็อคที่ไม่จำเป็นเป็นสาเหตุหลักของการหยุดชะงัก
13. เขียนโค้ดเพื่อใช้แคช LRU ใน Java
คำตอบ: LRU ย่อมาจาก Least Used Cache รูปแบบแคช LRU ใช้เพื่อลบแคชที่ใช้ล่าสุด กระบวนการนี้เกิดขึ้นเมื่อแคชที่มีอยู่เต็มและเพจใหม่ที่ถูกอ้างอิงไม่อยู่ในแคชที่มีอยู่ รหัสด้านล่างแสดงการใช้งาน:import java.util.Deque;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Iterator;
public class LRUCache {
private Deque doublyQueue;
private HashSet hashSet;
private final int CACHE_SIZE;
LRUCache(int capacity) {
doublyQueue = new LinkedList<>();
hashSet = new HashSet<>();
CACHE_SIZE = capacity;
}
public void refer(int page) {
if (!hashSet.contains(page)) {
if (doublyQueue.size() == CACHE_SIZE) {
int last = doublyQueue.removeLast();
hashSet.remove(last);
}
}
else {/* The found page may not be always the last element, even if it's an
intermediate element that needs to be removed and added to the start
of the Queue */
doublyQueue.remove(page);
}
doublyQueue.push(page);
hashSet.add(page);
}
public void display() {
Iterator itr = doublyQueue.iterator();
while (itr.hasNext()) {
System.out.print(itr.next() + " ");
}
}
public static void main(String[] args) {
LRUCache cache = new LRUCache(4);
cache.refer(1);
cache.refer(2);
cache.refer(3);
cache.refer(1);
cache.refer(4);
cache.refer(5);
cache.refer(2);
cache.refer(2);
cache.refer(1);
cache.display();
}
}
14. อาเรย์จะหมุนอย่างไรขึ้นอยู่กับตำแหน่งของ K เช่น k = 2
คำตอบ:ส่วนของโค้ดจะหมุน (ส่งคืน) อาร์เรย์ขึ้นอยู่กับตำแหน่งที่ระบุ แม้ว่าจะดูเหมือนง่าย แต่ก็ทดสอบความเข้าใจของคุณเกี่ยวกับลูปและอาร์เรย์ ดังนั้นจึงเป็นคำถามที่พบบ่อยในการสัมภาษณ์ Javapublic static int[] rotateBruteForce(int[] nums, int k) {
for (int i = 0; i < k; i++) {
for (int j = nums.length - 1; j > 0; j--) {
// move each number by 1 place
int temp = nums[j];
nums[j] = nums[j - 1];
nums[j - 1] = temp;
}
System.out.println("Array rotation after "+(i+1)+" step");
printArray(nums);
System.out.println();
}
return nums;
}
15. คิวใน Java คืออะไร? นำไปใช้งานโดยใช้อาร์เรย์
คำตอบ:คิวคือโครงสร้างเชิงเส้นที่แสดงลำดับการดำเนินการในลักษณะมาก่อนได้ก่อน Java มีการใช้งานที่ง่ายกว่าสำหรับประเภทข้อมูลนามธรรม เช่น คิว สแตก และอื่นๆ อย่างไรก็ตาม การนำไปปฏิบัติโดยใช้อาร์เรย์เป็นคำถามที่ทดสอบความเข้าใจของคุณเกี่ยวกับแนวคิดนี้ โปรดจำไว้ว่าการใช้งานอาร์เรย์ของคิวนั้นไม่ใช่แบบไดนามิกpackage org.arpit.java2blog;
public class QueueUsingArrayMain {
private int capacity;
int queueArr[];
int front;
int rear;
int currentSize = 0;
public QueueUsingArrayMain(int sizeOfQueue) {
this.capacity = sizeOfQueue;
front = 0;
rear = -1;
queueArr = new int[this.capacity];
}
16. HeapSort คืออะไร เขียนโค้ดเพื่อนำไปใช้งาน
คำตอบ: HeapSort เป็นวิธีการเรียงลำดับตามโครงสร้างข้อมูลฮีปไบนารี ฮีปไบนารีเป็นแผนผังไบนารีที่องค์ประกอบถูกจัดเก็บในลักษณะที่ค่าในโหนดพาเรนต์มีค่ามากกว่า (ฮีปสูงสุด) หรือน้อยกว่า (มินฮีป) มากกว่าค่าในโหนดย่อย โค้ดสำหรับใช้งาน HeapSort มีลักษณะดังนี้:public class HeapSort {
public void sort(int arr[])
{
int n = arr.length;
// Build heap (rearrange array)
for (int i = n / 2 - 1; i >= 0; i--)
heapify(arr, n, i);
// One by one extract an element from heap
for (int i = n - 1; i > 0; i--) {
// Move current root to end
int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
// call max heapify on the reduced heap
heapify(arr, i, 0);
}
}
// To heapify a subtree rooted with node i which is
// an index in arr[]. n is size of heap
void heapify(int arr[], int n, int i)
{
int largest = i; // Initialize largest as root
int l = 2 * i + 1; // left = 2*i + 1
int r = 2 * i + 2; // right = 2*i + 2
// If left child is larger than root
if (l < n && arr[l] > arr[largest])
largest = l;
// If right child is larger than largest so far
if (r < n && arr[r] > arr[largest])
largest = r;
// If largest is not root
if (largest != i) {
int swap = arr[i];
arr[i] = arr[largest];
arr[largest] = swap;
// Recursively heapify the affected sub-tree
heapify(arr, n, largest);
}
}
/* A utility function to print array of size n */
static void printArray(int arr[])
{
int n = arr.length;
for (int i = 0; i < n; ++i)
System.out.print(arr[i] + " ");
System.out.println();
}
// Driver code
public static void main(String args[])
{
int arr[] = { 12, 11, 13, 5, 6, 7 };
int n = arr.length;
HeapSort ob = new HeapSort();
ob.sort(arr);
System.out.println("Sorted array is");
printArray(arr);
}
}
17. การท่องจำคืออะไร?
คำตอบ:การท่องจำเป็นแนวทางที่ช่วยแก้ไขปัญหาที่เกิดจากการเขียนโปรแกรมแบบไดนามิก กระบวนการนี้ช่วยให้แน่ใจว่าวิธีการที่กำหนดจะไม่ถูกดำเนินการมากกว่าหนึ่งครั้งสำหรับข้อมูลอินพุตเดียวกัน ค่าที่ส่งคืนจะถูกเก็บไว้ในตารางแฮชหรือแมปแฮชและนำมาใช้ซ้ำตามความจำเป็น โค้ดด้านล่างเป็นตัวอย่างของการจดจำลำดับฟีโบนักชีimport java.io.*;
class GFG
{
// Fibonacci Series
// using Recursion
static int fib(int n)
{
// Base case
if (n <= 1)
return n;
// recursive calls
return fib(n - 1) +
fib(n - 2);
}
// Driver Code
public static void main (String[] args)
{
int n = 6;
System.out.println(fib(n));
}
}
18. เขียนโค้ดบางส่วนเพื่อใช้งาน Bubble Sorting
คำตอบ:โค้ดด้านล่างนี้เป็นวิธีการแก้ปัญหาสำหรับการเรียงลำดับแบบบับเบิ้ล ซึ่งเป็นคำถามที่พบบ่อยในการสัมภาษณ์ Javapublic class BubbleSortExample {
static void bubbleSort(int[] arr) {
int n = arr.length;
int temp = 0;
for(int i=0; i < n; i++){
for(int j=1; j < (n-i); j++){
if(arr[j-1] > arr[j]){
//swap elements
temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
}
public static void main(String[] args) {
int arr[] ={3,60,35,2,45,320,5};
System.out.println("Array Before Bubble Sort");
for(int i=0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
System.out.println();
bubbleSort(arr);//sorting array elements using bubble sort
System.out.println("Array After Bubble Sort");
for(int i=0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
}
}
19. โครงสร้างข้อมูล trie ใน Java คืออะไร?
ตอบ: Trie เป็นโครงสร้างข้อมูลที่จัดเก็บข้อมูลในโครงสร้างต้นไม้ที่ได้รับคำสั่งโดยใช้คีย์การจัดเก็บ ตำแหน่งของโหนดในแผนผังจะกำหนดคีย์ที่เกี่ยวข้องกับโหนด และลูกหลานของโหนดจะใช้คำนำหน้าร่วมกัน ด้วยโครงสร้างนี้ ความพยายามจึงให้ประสิทธิภาพที่ดีขึ้นและยังดึงข้อมูลได้เร็วยิ่งขึ้นอีกด้วย อย่างไรก็ตามข้อเสียเพียงอย่างเดียวของการใช้ไม้คือต้องใช้พื้นที่จัดเก็บมากขึ้น20. เขียนข้อมูลโค้ดเพื่อแปลง HashMap เป็น ArrayList
คำตอบ:โค้ดด้านล่างนี้ใช้ในการแปลง HashMapเป็นArrayListimport java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
public class Java8MapToListExamples
{
public static void main(String[] args)
{
//Creating a HashMap object
HashMap studentPerformanceMap = new HashMap();
//Adding elements to HashMap
studentPerformanceMap.put("John Kevin", "Average");
studentPerformanceMap.put("Rakesh Sharma", "Good");
studentPerformanceMap.put("Prachi D", "Very Good");
studentPerformanceMap.put("Ivan Jose", "Very Bad");
studentPerformanceMap.put("Smith Jacob", "Very Good");
studentPerformanceMap.put("Anjali N", "Bad");
//Getting Set of keys
Set keySet = studentPerformanceMap.keySet();
//Creating an ArrayList of keys
ArrayList listOfKeys = new ArrayList(keySet);
System.out.println("ArrayList Of Keys :");
for (String key : listOfKeys)
{
System.out.println(key);
}
System.out.println("--------------------------");
//Getting Collection of values
Collection values = studentPerformanceMap.values();
//Creating an ArrayList of values
ArrayList listOfValues = new ArrayList(values);
System.out.println("ArrayList Of Values :");
for (String value : listOfValues)
{
System.out.println(value);
}
System.out.println("--------------------------");
//Getting the Set of entries
Set> entrySet = studentPerformanceMap.entrySet();
//Creating an ArrayList Of Entry objects
ArrayList> listOfEntry = new ArrayList>(entrySet);
System.out.println("ArrayList of Key-Values :");
for (Entry entry : listOfEntry)
{
System.out.println(entry.getKey()+" : "+entry.getValue());
}
}
}
GO TO FULL VERSION