java – 比较CSV中的两个arrayLists
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 比较CSV中的两个arrayLists,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1887字,纯文字阅读大概需要3分钟。
内容图文
![java – 比较CSV中的两个arrayLists](/upload/InfoBanner/zyjiaocheng/790/bfe5798a66d040978a652f1667535e0c.jpg)
我有一个普遍的问题:
在以下情况下,根据彼此的值对两个arraylists进行排序的最佳方法是:
(1)每个arrayList只包含导入CSV的一列(通过inputStream和bufferReader(为了方便起见,我不会在下面打印).
//my arrayLists:
List <String> OpenVal = new Arraylist ();
List <String> CloseVal = new Arraylist();
//lists from above contain column 0 and 1 from CSV:
while((reader.readLine()) != null) {
Sting line = "";
String ColTwo [] = line.split(",");
openVal.add(colOne[1]);
closVal.add(colOne[2]);
(2)为了进一步清楚,CSV [colOne [1],colOne [2]的每一列包含以下信息:
//colOne [1] colOne [2]
date value
friday 32
tues 21
wed 5
(3)我对它进行排序的方式就像这样(按值):
//colOne [1] colOne [2]
date value
wed 5
tues 21
friday 32
(4)我没有找到一个有效的比较器类,因为我不需要将信息写入arraylist的构造函数.该列表以CSV为前缀.
(3)如何比较两个列表的最佳方法?
解决方法:
如果您的csv每个日期只包含一行,您可以将数据存储到map而不是list:
Map<String,Integer> myMap = new HashMap<>();
String line;
while((line = reader.readLine()) != null) {
myMap.put(line.split(",")[0], Integer.parseInt(line.split(",")[1]));
}
之后您可以对地图进行排序:
Map<String,Integer> sorted = myMap.entrySet().stream().
sorted(Map.Entry.comparingByValue()).
collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,(e1, e2) -> e1,LinkedHashMap::new));
并打印您的有序地图:
sorted.entrySet().forEach(System.out::println);
或者如DodgyCodeException所评论,将您的行读到List< String []>:
List<String[]> myList = new ArrayList<>();
String line = "";
while((line = reader.readLine()) != null) {
myList.add(line.split(","));
}
并排序:
Collections.sort(myList, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return Integer.compare(Integer.parseInt(o1[1]), Integer.parseInt(o2[1]));
}
});
最后打印列表只需使用for循环,例如:
for(String[] row : myList){
System.out.println(row[0] +" : "+ row[1])
}
内容总结
以上是互联网集市为您收集整理的java – 比较CSV中的两个arrayLists全部内容,希望文章能够帮你解决java – 比较CSV中的两个arrayLists所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。