Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

หาคำที่ซ้ำอันดับสองมากที่สุดในลำดับข้อมูลด้วย Java

ตัวอย่างโค้ด

import java.util.*;

public class Demo {
    static String second_repeated(Vector my_seq) {
        HashMap my_map = new HashMap(my_seq.size()) {
            @Override
            public Integer get(Object key) {
                return containsKey(key) ? super.get(key) : 0;
            }
        };
        
        for (int i = 0; i < my_seq.size(); i++)
            my_map.put(my_seq.get(i), my_map.get(my_seq.get(i)) + 1);
            
        int first_val = Integer.MIN_VALUE;
        int sec_val = Integer.MIN_VALUE;
        Iterator> my_iter = my_map.entrySet().iterator();
        
        while (my_iter.hasNext()) {
            Map.Entry ent = my_iter.next();
            int v = ent.getValue();
            if (v > first_val) {
                sec_val = first_val;
                first_val = v;
            } else if (v > sec_val && v != first_val)
                sec_val = v;
        }
        
        my_iter = my_map.entrySet().iterator();
        while (my_iter.hasNext()) {
            Map.Entry ent = my_iter.next();
            int v = ent.getValue();
            if (v == sec_val)
                return ent.getKey();
        }
        return null;
    }

    public static void main(String[] args) {
        String arr[] = {"This", "sample", "only", "anything", "sample", "from", "sample", "only"};
        List my_seq = Arrays.asList(arr);
        System.out.println("The second most repeated word in the sequence is : ");
        System.out.println(second_repeated(new Vector<>(my_seq)));
    }
}

ผลลัพธ์

The second most repeated word in the sequence is : only

คลาส Demo มีฟังก์ชัน second_repeated สร้าง HashMap และ override เมธอด get เพื่อคืนค่า 0 หาก key ไม่มีอยู่ ใช้อิเทอเรเตอร์วนลูปนับความถี่ของแต่ละคำ หาค่าสูงสุด (first_val) และค่าสูงสุดอันดับสอง (sec_val) จากนั้นวนอิเทอเรเตอร์อีกรอบเพื่อหาคำที่มีความถี่เท่ากับ sec_val และคืนค่าคำนั้น ใน main สร้างอาร์เรย์ String แปลงเป็น List และเรียกฟังก์ชัน