【发布时间】:2018-02-13 20:44:53
【问题描述】:
我正在尝试从包含 4 列的 CSV 文件中读取数据到数组列表中。我们将列称为 a,b,c,d(它们每个都包含整数)。然后我想根据a,b,c,d的行的内容对数组列表进行排序。
因此,例如,如果您比较第 1 行和第 2 行,如果 1d 的值则返回某个值。如果 1d=2d 则将 1c 与 2c 进行比较,依此类推。我无法找到一种方法来创建允许我区分和比较每一行/列的数组列表。
public class Speed {
public static void main(String[] args) throws IOException {
// TODO code application logic here
readCSV();
}
public static void readCSV() throws FileNotFoundException, IOException {
BufferedReader br = new BufferedReader(new FileReader("amis.csv"));
String line = "";
ArrayList<String> amis = new ArrayList<String>();
while ((line = br.readLine()) != null) {
line = line.replaceAll("\"", "");
amis.add(line);
}
amis.remove(0);
for (String alphabet: amis) {
Object[] parts = alphabet.split(",");
Object studentID = (parts[0]);
Object a = parts[1];
Object b = parts[2];
Object c = (parts[3]);
Object d = parts[4];
ArrayList<Object> Compare = new ArrayList();
Compare.add(a);
Compare.sort(new customComparator());
}
我的自定义比较器类
public class customComparator implements Comparator<Object> {
public int compare(Object o1, Object o2) {
int a = (Integer) o1;
int b = (Integer) o2;
if (a < b) {
return 1;
}
else if(a > b)
return -1;
else
return 0;
}
}
【问题讨论】:
-
为什么要用
Object[] parts = alphabet.split(",");将字符串更改为对象?看起来您稍后将 Objects (really Strings) 转换为整数,这肯定至少会产生运行时错误?
标签: java csv sorting object arraylist