为什么它返回空,但不是字符串在HashMap?java



如何从Map中获取值?我研究了集合,想要留下这个顺序<String,>。我之前试过<Integer,>在循环中,我输入res.append(map.get(num));这对我很有帮助。但却不知道如何倒序。我也红了https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html#get-java.lang.Object-,但我知道我有一个关键..

import java.util.LinkedHashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
int x = 555;
String result = romanianConverter(x);
System.out.println(result);
}
public static String romanianConverter(int value) {
Map<String, Integer> map = new LinkedHashMap<>();
//        map.put(1000, "M");
//        map.put(900,"CM");
//        map.put(500,"D");
//        map.put(400,"CD");
//        map.put(100,"C" );
//        map.put(90,"XC" );
//        map.put(50,"L" );
//        map.put(40,"XL");
//        map.put(10,"X" );
//        map.put(9,"IX" );
//        map.put(5,"V" );
//        map.put(4,"IV" );
//        map.put(1,"I" );
map.put("M", 1000);
map.put("CM", 900);
map.put("D", 500);
map.put("CD", 400);
map.put("C", 100);
map.put("XC", 90);
map.put("L", 50);
map.put("XL", 40);
map.put("X", 10);
map.put("IX", 9);
map.put("V", 5);
map.put("IV", 4);
map.put("I", 1);
StringBuilder stringBuilder = new StringBuilder("Result = ");
for (int number2 : map.values()) {
while (number2 <= value) {
stringBuilder.append(map.keySet().add(number2));
value -= number2;
}
}
return stringBuilder.toString();
}
}

遍历HashMap非常简单。首先,您必须了解<>菱形括号中的第一类是KEY,第二类是VALUE

所以如果我创建一个新的HashMap<Integer, String>元素将是以下形式的

1 -> "str",
2 -> "str2"
....

遍历HashMap,我们只需要keys,这样做:

Map<String, Object> map = ...;
for (Integer key : map.keySet()) {
// ...
}

如果我们只想要值:

for (String value : map.values()) {
// ...
}

如果我们同时需要它们:

for (Map.Entry<Integer, String> entry : map.entrySet()) {
Integer key = entry.getKey();
String value = entry.getValue();
// ...
}

我仍然相信你正在尝试转换integers在罗马数字。这里已经有解决方案了。

在当前的实现中,您需要迭代Map::entrySet方法返回的映射项,以便在找到值时立即使用键:

// ...
for (Map.Entry<String, Integer> me: map.entrySet()) {
int number2 = me.getValue();
while (number2 <= value) {
stringBuilder.append(me.getKey());
value -= number2;
}
}
// ...

或者,如果实现反向映射Map<Integer, String> map,则应迭代keySet:

for (Integer number2: map.keySet()) {
while (number2 <= value) {
stringBuilder.append(map.get(number2));
value -= number2;
}
}

相关内容

  • 没有找到相关文章

最新更新