Java Загрузить все строки из файла в структуру данных Set с помощью (ключ = строка, значение = номер строки) - PullRequest
0 голосов
/ 09 января 2020

Я пытался реализовать структуру данных Set с ключом, значением. У меня есть файл txt (EOL), строка, номер строки примерно такой:

Adam,1
Mary,2
Michael,3

Моя цель - сохранить это key-value внутри набора .

Вот мой код:

public class Main {

public static void main(String[] args)throws Exception
{

    Scanner scanner = new Scanner(new FileReader("C:\\Users\\musti\\Desktop\\demo.txt"));

    HashMap<String,Integer> mapFirstfile = new HashMap<String,Integer>();

    while (scanner.hasNextLine()) {
        String[] columns = scanner.nextLine().split(",");

        mapFirstfile.put(columns[0],Integer.parseInt(columns[1]));        }
    // HashMap sıralı yazdırmaz, LinkedHashSet sıralı tutar, ama ekstradan linkedlist lazım.
    System.out.println(mapFirstfile);
    System.out.println(mapFirstfile.keySet());
    System.out.println(mapFirstfile.values());

    Set<HashMap> setFirstfile = new HashSet<HashMap>();


}

1 Ответ

0 голосов
/ 10 января 2020

На самом деле это не ответ, но слишком длинный для комментария ...

Прежде всего, Set - это структура уникальных (в отношении equals()) значений.

Таким образом, ваш код на самом деле использует правильную структуру Map, в которой вы отображаете String на число (Integer).

Вопрос 1

Требуется ли число? в файле? Вы можете вычислить это из ввода

Adam
Mary
Michael

мы знаем, что Адам находится в первой строке ...

edit 1: Вы можете использовать счетчик, который вы будете увеличивать каждый раз, когда вы вводите l oop. В Java API нет ничего, что могло бы сделать это для вас ...

Вопрос 2

В вашем вопросе мне не хватает информации о том, что не работает ... Каково ваше ожидание, которое не соответствует действительности?

Вопрос 3

Что в случае дубликатов?

Alfa
Bravo
Alfa

Это нормально, что на 3-я строка, которую вы переназначаете Alfa на 3?

Вопрос 4

Какова ваша мотивация использовать Set?

Как я писал в Set, содержит «одиночные» предметы. Если ваш предмет содержит несколько полей, вы можете заключить в Object, но я не вижу преимущества ...

Что-то вроде

class Item {
    String line;
    int lineNumber;
    // TODO: 1 add constructors
    // TODO: 2 add getter & setters
    // TODO: 3 implement equals() and hashCode()
}

и добавить его к Set вот так:

Set mySet = ...
mySet.add(new Item(line, counter)); // you need to add such constructor
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...