Java доступ к списку, который есть на карте

1

При анализе файла csv я добавлял каждый столбец в список, а затем каждый список на map. На каждой карте ключ является первой строкой списка.

        CSVReader reader = new CSVReader(new FileReader("plik.csv"),';');
        CSVReader ile = new CSVReader(new FileReader("plik.csv"),';');

        int columnCount=0;
        String[] header = ile.readNext(); // assuming first read

        if (header != null) {                     // and there is a (header) line
              columnCount = header.length;       // get the column count
        }


        HashMap<String, List<String>> map = new HashMap<String, List<String>>();

        List content = reader.readAll();
        String[] row;
        String key;
        int column=0;

        for(int i=0; i <columnCount-1; i++) {
            List<String> lista = new ArrayList<String>();
                key=null;
            for (Object object : content) {

                row = (String[]) object;
                if (column== 0) {
                    key = row[i];
                }
                if (kolumna != 0) {

                    lista.add(row[i]);
                    map.put(key, lista);
                }
                kolumna++;
            }
            kolumna=0;
        }

После этой операции я хотел бы иметь доступ к возможности итерации в каждом из этих списков.

Я хотел сделать это, используя

for (String q: map.keySet ()) {
             System.out.println (q + "-" + map.get (q));
         }

Но в результате каждый список показан на szytwno в каждой строке. У меня нет доступа к отдельным элементам в списке, который я бы хотел бросить, например. К выпадающему качели.

Вывод:

Datum - [07.10.2014, 07.10.2014, 07.10.2014]
ProzessID - [1180804, 1180804, 335605]

Ключ: Datum, ProzessID

Теги:
csv

1 ответ

1
Лучший ответ

Вместо этого попробуйте использовать map.entrySet():

      for (Entry<String, List<String>> entry : map.entrySet())
      {
          System.out.println(entry.getKey() + ":");
          for (String s : entry.getValue()){
              System.out.println(s);
          }
      }
  • 1
    Это уже попробовал. Данные отображаются одинаково. Я хотел бы перечислить элементы отображать их один под другим и не были разделены , и [ . Может быть, мне нужно сделать цикл в цикле? Так что я могу контролировать итерации одного и того же списка. Он хочет, чтобы данные из списка добавлялись в JComboBox. Так что у вас есть выбор 1180804 или 1180804 или 335605 . И не весь ряд [1180804, 1180804, 335605] .
  • 2
    квадратные скобки и двоеточия создаются методом toString () из списка. если вы хотите отобразить их по-разному, вам нужно получить доступ к каждому элементу в самом списке. Вы знаете, что ComboBox имеет метод addAll? . ComboBox.getItems () addAll (entry.getValue ());
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню