java – 基于另一个数组的排序进行排序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 基于另一个数组的排序进行排序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2481字,纯文字阅读大概需要4分钟。
内容图文
![java – 基于另一个数组的排序进行排序](/upload/InfoBanner/zyjiaocheng/754/5a48807d03f24db989f6711c3294eecb.jpg)
参见英文答案 > Sorting two arrays simultaneously 7个
我有一个String数组列表totalVals. totalVals中的每个条目都是一个字符串名称和一个双重loc,它在插入数组列表之前连接成一个字符串,如:
totalVals.add(name + "," + loc);
这是给我数据的方式.我已将值分隔为字符串和双数组,如下所示:
String[] temp;
String[] names = new String[totalVals.size()];
double[] locs = new double[totalVals.size()];
for (int i = 0; i < totalVals.size(); I++){
temp = totalVals.get(i).splot(",");
names[i] = temp[0];
locs[i] = Double.parseDouble(temp[1]);
}
然而,现在,我想在返回之前对数据进行排序并将其放回到数组列表中.我希望locs数据按降序排列,我可以使用Arrays.sort(locs,Collections.reverseOrder());来完成.但我不知道如何对名称进行排序,以便名称仍然与它们最初的相同位置相关联.
totalVals的例子:{“巴哈马,32.2233”,“津巴布韦,82.2443”,“印度,56.2355”,“澳大利亚,24.4363”}
将分为:
names = {"Bahamas","Zimbabwe","India","Australia"};
locs = {32.2233,82.2443,56.2355,24.4363};
然后将分类到:
names = {"Zimbabwe","India","Bahamas","Australia"};
locs = {82.2443,56.2355,32.2233,24.4363};
那么我如何对两个数组进行排序,使得两个数组中索引i的关联保持不变?
解决方法:
不是将arraylist分成两个不同的数组并分别对它们进行排序,而是根据double值按降序对ArrayList进行排序,然后将arraylist分成两个数组
List<String> list = new ArrayList<>();
list.add("Bahamas,32.2233");
list.add("Zimbabwe,82.2443");
list.add("India,56.2355");
list.add("Australia,24.4363");
List<String> result = list.stream().sorted((a,b)->b.substring(b.lastIndexOf(",")+1).compareTo(a.substring(a.lastIndexOf(",")+1))).collect(Collectors.toList());
System.out.println(result); //[Zimbabwe,82.2443, India,56.2355, Bahamas,32.2233, Australia,24.4363]
将列表分成double []数组和String []数组
double[] arr = result.stream().mapToDouble(i->Double.parseDouble(i.substring(i.lastIndexOf(",")+1))).toArray();
System.out.println(Arrays.toString(arr)); // [82.2443, 56.2355, 32.2233, 24.4363]
String[] countries = result.stream().map(i->i.substring(0, i.lastIndexOf(","))).toArray(String[]::new);
System.out.println(Arrays.toString(countries)); //[Zimbabwe, India, Bahamas, Australia]
之前的java 8版本
通过使用带有自定义比较器的Collections.sort(),然后将列表拆分为两个不同的数组
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.substring(o2.lastIndexOf(",")+1).compareTo(o1.substring(o1.lastIndexOf(",")+1));
}
});
System.out.println(list); //[Zimbabwe,82.2443, India,56.2355, Bahamas,32.2233, Australia,24.4363]
内容总结
以上是互联网集市为您收集整理的java – 基于另一个数组的排序进行排序全部内容,希望文章能够帮你解决java – 基于另一个数组的排序进行排序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。