JavaRush /จาวาบล็อก /Random-TH /คอฟฟี่เบรค #92. 20 คำถามสัมภาษณ์ Java ที่ถูกถามบ่อย

คอฟฟี่เบรค #92. 20 คำถามสัมภาษณ์ Java ที่ถูกถามบ่อย

เผยแพร่ในกลุ่ม
ที่มา: 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 โดยใช้การเรียกซ้ำ

คำตอบ:ข้อมูลโค้ดด้านล่างนี้ใช้ลำดับฟีโบนักชีโดยใช้การเรียกซ้ำ คำถามนี้พบได้ทั่วไปในการสัมภาษณ์ Java
public 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 โค้ดด้านล่างแสดงการใช้งาน HashMaps
import 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

คำตอบ:ส่วนของโค้ดจะหมุน (ส่งคืน) อาร์เรย์ขึ้นอยู่กับตำแหน่งที่ระบุ แม้ว่าจะดูเหมือนง่าย แต่ก็ทดสอบความเข้าใจของคุณเกี่ยวกับลูปและอาร์เรย์ ดังนั้นจึงเป็นคำถามที่พบบ่อยในการสัมภาษณ์ Java
public 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

คำตอบ:โค้ดด้านล่างนี้เป็นวิธีการแก้ปัญหาสำหรับการเรียงลำดับแบบบับเบิ้ล ซึ่งเป็นคำถามที่พบบ่อยในการสัมภาษณ์ Java
public 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เป็นArrayList
import 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());
        }
    }
}
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION