Saya memiliki file CSV dengan 5 baris, dan tiga potong data yang dipisahkan oleh COMA di setiap baris. Contoh baris: Drew, 37, 150.5 Saya mencoba membaca data dari CSV, menjadi hashmap dan kemudian mencetak ...

0
Drew Davis 5 April 2021, 22:55

2 jawaban

Jawaban Terbaik

Anda harus mencetak data daripada mypeople, karena Anda belum menambahkan apa pun kepada myPeople.

Anda dapat menggunakan mypeople.put (kunci, nilai) untuk menambahkan elemen ke peta Anda, lihat https://www.geeksforgeek.org/hashmap-put-method-in-java/.

Maka Anda dapat menggunakan mypeople.get (kunci) untuk mengambil nilai, lihat https://www.geeksforgeeks.org/java-util-hashmap-in-java-with-examples/.

0
Mady Daby 5 April 2021, 20:11

Anda belum menambahkan apa pun ke peta Anda, itu sebabnya itu hanya mencetak peta kosong ({}) pada setiap iterasi. Berikut adalah contoh bagaimana melakukan ini:

public class Main {

    static class Person {
        String name;
        int age;
        int height;

        public Person(String name, int age, int height) {
            this.name = name;
            this.age = age;
            this.height = height;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Person person = (Person) o;
            return age == person.age && height == person.height && name.equals(person.name);
        }

        @Override
        public int hashCode() {
            return Objects.hash(name, age, height);
        }

        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ", height=" + height +
                    '}';
        }
    }

    private static final String csv =
            "Drew, 37, 168\n" +
                    "Bob, 30, 170";

    public static void main(String[] args) {
        Map<String, Person> map = new HashMap<>();
        try (Scanner scanner = new Scanner(csv)) {
            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                String[] lineParts = line.split("\\s*,\\s*");
                map.put(lineParts[0], new Person(lineParts[0], Integer.parseInt(lineParts[1]), Integer.parseInt(lineParts[2])));
            }
        }
        System.out.println(map);
    }
}

Output: {bob = orang {name = 'bob', usia = 30, tinggi = 170}, jack = orang {name = 'jack', usia = 37}}

0
Nikolay Bondarchuk 5 April 2021, 20:32