При анализе файла 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
Вместо этого попробуйте использовать map.entrySet():
for (Entry<String, List<String>> entry : map.entrySet())
{
System.out.println(entry.getKey() + ":");
for (String s : entry.getValue()){
System.out.println(s);
}
}
,
и[
. Может быть, мне нужно сделать цикл в цикле? Так что я могу контролировать итерации одного и того же списка. Он хочет, чтобы данные из списка добавлялись в JComboBox. Так что у вас есть выбор1180804
или1180804
или335605
. И не весь ряд[1180804, 1180804, 335605]
.