我想读取 csv 文件并将单词“Jakarta”和“Bandung”放入组合框中。这是输入
id,from,
1,Jakarta
2,Jakarta
5,Jakarta
6,Jakarta
10,Bandung
11,Bandung
12,Bandung
我设法获取这些单词并将其放入组合框中,但如您所见,文本文件本身包含很多单词“Jakarta”和“Bandung”,而我只想在组合框中显示这两个单词一次。
这是我的临时代码,目前有效,但效率低下,如果单词有更多变化,可能无法使用
public String location;
private void formWindowOpened(java.awt.event.WindowEvent evt) {
String csvFile = "C:\\Users\\USER\\Desktop\\Project Data.csv";
BufferedReader br = null;
LineNumberReader reader = null;
String line = "";
String cvsSplitBy = "-|\\,";
br = new BufferedReader(new FileReader(csvFile));
reader = new LineNumberReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
// use comma as separator
String[] bookingdata = line.split(cvsSplitBy);
location = bookingdata[1];
ComboBoxModel model = cmb1.getModel();
int size = model.getSize();
cmb1.addItem(location);
for(int i = 1; i < size; i++){
if(model.getElementAt(i).equals("from")){
cmb1.removeItemAt(i);
}
else if(model.getElementAt(i).equals("Bandung")){
cmb1.removeItemAt(i);
}
for(int j = 2; j < i; j++){
if(model.getElementAt(j).equals("Jakarta")){
cmb1.removeItemAt(j);
}
}
}
}
}
其他人推荐了这种方法
boolean isEquals = false;
for(i = 0; i < a && !isEquals; i++){
isEquals = location.equals("Jakarta");
if(isEquals){
cmb1.addItem("Jakarta");
}
}
这段代码不起作用。因为代码一旦添加“ Jakarta ”就不会停止,但它会在完成循环后停止。因此它仍然在组合框中创建重复项。
我想知道是否还有其他代码可以尝试。谢谢