gpt4 book ai didi

java - 根据另一个数组对数组进行排序

转载 作者:行者123 更新时间:2023-12-01 23:00:17 24 4
gpt4 key购买 nike

我有 2 个数组:

第一个由人名组成。第二个给出了页面中出现的名称数量。例如:Names=["James","Loiui","Mario","Peter"]计数=[1,4,2,5]

现在我尝试使用以下代码:

SortedMap<Integer, String> m = new TreeMap<Integer, String>();
for(int i = 0; i < Names.size(); i++)
m.put( count.get(i),Names.get(i));

但是鉴于 count 存在重复值,这不起作用。我发现问题出在 TreeMap 上,因为它只存储唯一元素。现在为了解决我的问题,有没有其他有效的解决方案。

最佳答案

创建一个类PersonFrequency,其中包含名称和计数。创建单个 PersonFrequency 实例数组或列表。按计数排序此数组:

Java 8 示例:

List<PersonFrequency> list = new ArrayList<>(names.length);
for (int i = 0; i < names.length; i++) {
list.add(new PersonFrequency(names[i], counts[i]);
}

list.sort(Comparator.comparing(PersonFrequency::getCount).reversed());

List<String> sortedNames = list.stream()
.map(PersonFrequency::getName)
.collect(Collectors.toList());

在 Java 7 中,排序将变为

Collections.sort(list, new Comparator<PersonFrequency>() {
@Override
public int compare(PersonFrequency p1, PersonFrequency p2) {
return Integer.compare(p2.getCount(), p1.getCount());
}
});

关于java - 根据另一个数组对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23470145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com