Я читаю таблицу Excel, содержащую четыре столбца, и создаю список. Теперь я хотел бы использовать первые три столбца в качестве ключа и использовать последний столбец в качестве значения. Я видел похожие вопросы, которые задавали, но во всех этих вопросах в качестве ключа используется либо строка, либо целое число.
public class initial {
private int from;
private int to;
private int via;
private int cost;
//constructor
//set and get methods
//hashCode and equals methods
}
public class myTuple {
private int from;
private int to;
private int via;
}
//main function
//get the Excel Table as a list
ArrayList<initial> myList = new ArrayList<initial>();
for(int i= mySheet.getFirstRowNum()+1 ; i<= mySheet.getLastRowNum(); i++) {
initial e = new initial();
Row ro = mySheet.getRow(i);
for(int j = ro.getFirstCellNum(); j <= ro.getLastCellNum(); j++) {
Cell ce = ro.getCell(j);
switch(j) {
case 0:
e.setFrom((int) ce.getNumericCellValue());
break;
.....
case 3:
e.setCost((int) ce.getNumericCellValue());
break;
}
}
myList.add(e);
}
//Create map
Map<myTuple, Integer> myMap = new HashMap<>();
Я не знаю, как действовать после этого. Я считаю, что я должен использовать что-то вроде;
Map<myTuple, Integer> myMap= myList.stream().collectC(ollectors.toMap(myList:: , myList::));
Если бы кто-то мог мне помочь, я бы очень признателен.
Кроме того, если вы считаете, что есть более эффективный способ сделать это (например, способ, которым я читаю свои данные и анализирую в список, способ, которым я преобразую список в карту), пожалуйста, дайте мне знать. Несмотря на то, что это не входит в содержание этого вопроса, если есть лучший способ прочитать многомерную таблицу и проанализировать список, как я, я бы тоже хотел это услышать. В будущем у меня будут большие таблицы с большим количеством столбцов. Следовательно, я не совсем уверен, что путь через каждый столбец с оператором switch - это путь.