【发布时间】:2015-01-20 21:08:56
【问题描述】:
我已经制作了一个程序来制作一张新地图并从用户那里获取输入并填充地图......
然后我反转了地图键/值并用它制作了一个新地图......
我唯一坚持的事情,这是困难的部分......是检查“值”中是否有重复项,如果是这样......我只想保留与较小值相对应的 1它的关键... 例如,如果我有 12=13 、 8=13 ,我想将 8=13 放在我的第二个倒置映射中并删除 12=13。
public class
{
public static void main(String[] args)
{
PrintStream output = new PrintStream(System.out);
Scanner input = new Scanner(System.in);
Map<String,String> normal = new HashMap<String,String>();
output.println("Enter your map, one key-value pair per line,");
output.println("comma-separated. Use empty line as sentinel.");
for ( String entry = input.nextLine(); entry.length() !=0;
entry = input.nextLine())
{
int comma = entry.indexOf(",");
String key = entry.substring(0,comma);
String value = entry.substring(comma+1);
normal.put(key,value);
}
output.println(normal);
Map<String,String> reverse = new HashMap<String,String>();
for (Map.Entry<String,String> entry : normal.entrySet())
{
String keyY = entry.getKey();
String valueE = entry.getValue();
reverse.put(valueE,keyY);
}
output.println(reverse);
}
}
【问题讨论】:
-
不是很清楚你想要什么,也许给一个代码示例?
-
在第二个 Map 中输入键/值之前,检查键是否已经存在?
-
抱歉,这里是代码..
-
我有点困惑——你想在键较小的地方保留键值条目,就好像它是一个数字一样。但是,您使用的是 Map
,而不是使用 Map 。如果您的地图存储字符串,则无法保证您的键可以转换为数字。如果不是 "8"="13" 和 "12"="13" 而是 "hello"="13" 和 "hi"="13" 怎么办?你想保留哪一个?或者你的意思是使用数字映射而不是字符串映射? -
@TJamesBoone 老实说,我应该使用 Map
但我真的不知道如何从用户那里获取输入...使用字符串允许我搜索逗号和你知道的 2 个数字.. 我确定有办法,但我想不通,所以我按照书上写的这个方法。所以输入肯定是数字,并且肯定会有重复的值......我需要首先确定值的重复(我尝试通过 getValues() 这样做并且它有效)但后来我无法替换对应的键较小的键:(我搜索了整个API ...
标签: java if-statement map iterator key-value