gpt4 book ai didi

java - 如何输出 map 的反转 [Java]

转载 作者:行者123 更新时间:2023-12-02 03:11:27 28 4
gpt4 key购买 nike

问题如下:Jane 有一些 friend ,她与一些 friend 关联了一个号码。我必须按照点赞数从最少到最多的顺序输出好友。

我主要好奇的是如何在输出时反转 map 值的顺序。在我的代码中,我必须通过迭代器提取值(我无法直接使用集合),然后通过在以下位置插入每个连续元素将每个字符串存储到数组列表中:索引 0。结果,这颠倒了我认为有效的顺序。

import java.util.*;
import java.io.*;
import static java.lang.System.*;

public class Friends {
public static void main(String args[]) throws IOException
{
Scanner line = new Scanner(new File("friends.dat"));
int trials = line.nextInt();
for(int k = 0 ; k < trials ; k++)
{
TreeMap<Integer, String> m = new TreeMap<Integer,String>();
int subtrials = line.nextInt();

for(int a = 0; a < subtrials ; a++)
{
String name = line.next();
int likes = line.nextInt();
m.put(likes,name);
}

Iterator iter = m.values().iterator(); //**Code of interest starts here**
ArrayList<String> list = new ArrayList<String>();

while(iter.hasNext()) {

list.add(0, (String)iter.next());
}

for(int a = 0 ; a < list.size() ; a++)
{
if(a == list.size() - 1)
out.print(list.get(a));
else
out.print(list.get(a) + ", ");
}
out.println();
}
}
}

最佳答案

您可以使用自定义 comparator反转映射中条目的顺序(请注意,这仅适用于 TreeMap - 其他映射实现不关心顺序)。

public static void main(String[] args) {
TreeMap<Integer, String> map = new TreeMap<>((key1, key2) -> Integer.compare(key2, key1)); //Custom comparator.
map.put(1, "Bob");
map.put(3, "Baz");
map.put(2, "Foo");

System.out.println(map);
}

关于java - 如何输出 map 的反转 [Java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40988291/

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