gpt4 book ai didi

java - 根据索引打印 map 中的值

转载 作者:行者123 更新时间:2023-11-30 05:11:12 25 4
gpt4 key购买 nike

如果我有以下 map :

 NavigableMap<Integer,String> nmap = 
new TreeMap<Integer,String>();

nmap.put(3, "Three");
nmap.put(1, "One");
nmap.put(4, "Four");
nmap.put(5, "Five");
nmap.put(7, "Seven");
nmap.put(10, "Ten");


System.out.println(nmap);
// {1=One, 3=Three, 4=Four, 5=Five, 7=Seven, 10=Ten}

是否有一种机制可以允许我打印此内容,如果索引小于以下索引打印中的 1 -(破折号),则按索引值打印:

One,-,Three,Four,Five,-,Six,Seven,-,-,Ten

我该如何为此编写函数?

我不必将每个键/值对的整个映射打印为字符串

最佳答案

这是一个通用的解决方案,它也可以进行串联。我的泛型知识有点狡猾,所以不要对奇怪的错误感到惊讶:

static <V> List<V> NMapToList(NavigableMap<Integer,V> nmap, V emptyEntryValue)
{
Integer next = null;
List<V> list = new ArrayList<V>();

for(NavigableMap.Entry<Integer, V> e : nmap.entrySet())
{
Integer current = e.getKey();

if(next != null)
for(int i = next; i < current; i++)
list.add(emptyEntryValue);
list.add(e.getValue());

next = current + 1;
}

return list;
}

static String listToString(List<?> l, String separator)
{
StringBuilder sb = new StringBuilder("(");
String sep = "";
for (Object object : l)
{
sb.append(sep).append(object.toString());
sep = separator;
}
return sb.append(")").toString();
}

String s = listToString(NMapToList(nmap,'-'),',');

关于java - 根据索引打印 map 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3317968/

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