我有一个CSV文件,要在Vaadin的网格中显示。 文件看起来像这样:
CTI.csv
//div[contains(., "The file abc.txt is not available.")]
到目前为止,我尝试了while循环和for循环。 for循环如下所示:
Facebook
Twitter
Instagram
Wiki
现在的问题是,它仅显示最后一个条目“ Wiki”。如果我像下面这样对数据进行硬编码,它将起作用:
Scanner sc = null;
try {
sc = new Scanner(new File("C:/development/code/HelloWorld/src/CTI.csv"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
List<CTITools> tools = null;
for (Iterator<String> s = sc; s.hasNext(); ) {
tools = Arrays.asList(new CTITools(s.next()));
}
Grid<CTITools> grid = new Grid<>();
grid.setItems(tools);
grid.addColumn(CTITools::getTool).setCaption("Tool");
layout.addComponents(grid);
setContent(layout);
那我做错了什么?为什么循环不起作用?
答案 0 :(得分:2)
第tools = Arrays.asList(new CTITools(s.next()));
行在每次迭代中创建一个新列表。如果要将项目存储在一个列表中,则需要创建一次。然后使用tools.add(new CTITools(s.next()))
将项目添加到循环中的同一列表中。
答案 1 :(得分:1)
您在每次迭代时都会创建一个新列表,因此您会丢失以前的内容。
tools = Arrays.asList(new CTITools(s.next()));
您应仅将项目添加到同一tools
列表中
List<CTITools> tools = new ArrayList<>();
for (Iterator<String> s = sc; s.hasNext(); ) {
tools.add(new CTITools(s.next()));
}