据我了解,下面的代码应打印true,因为两者Stream并Iterator指向的第一个元素.
但是,当我运行以下代码时,它正在打印false:
final HashMap<String, String> map = new HashMap<>();
map.put("A", "B");
final Set<Map.Entry<String, String>> set = Collections.unmodifiableMap(map).entrySet();
Map.Entry<String, String> entry1 = set.iterator().next();
Map.Entry<String, String> entry2 = set.stream().findFirst().get();
System.out.println(entry1 == entry2);
Run Code Online (Sandbox Code Playgroud)
不同行为的原因是什么?
我需要遍历地图的入口集,我不知道它的参数化类型.
迭代这样的入口集时,为什么不编译?
public void myMethod(Map anyMap) {
for(Entry entry : anyMap.entrySet()) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
但是这个编译:
public void myMethod(Map anyMap) {
Set<Entry> entries = anyMap.entrySet();
for(Entry entry : entries) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
这也编译(我不能使用这个,因为我不知道地图的类型):
public void myMethod(Map<String, String> stringMap) {
for(Entry<String,String> entry : stringMap.entrySet()) {
...
}
}
Run Code Online (Sandbox Code Playgroud) 我遇到了一个代码片段,它使用其入口集迭代地图,并仅在entry!= null时执行一些操作
据我所知,即使我们没有在地图中输入任何内容,也会map.entrySet返回一个空集null.即使我把{null,null}那个条目放在一起[null=null]就是这个元素的实例.但实例不会为空.
Map<String, String> map = new HashMap<String, String>();
map.put(null, null);
map.put(string1, string1);
for(Map.Entry<String, String> entry : map.entrySet()){
if(entry != null){
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
我有以下基本问题:
我坚信if(entry != null)谨慎,应该将其删除.我只想确定.
我有一个哈希图,如下所示:
HashMap<String, Integer> hm = new HashMap<String, Integer>;
hm.put("a", 1);
hm.put("b", 12);
hm.put("c", 53);
hm.put("d", 2);
hm.put("e", 17);
hm.put("f", 8);
hm.put("g", 8);
Run Code Online (Sandbox Code Playgroud)
我如何获得具有 3 个最高值的键?所以它会返回:
"c", "e", "b"
Run Code Online (Sandbox Code Playgroud)
谢谢。
我有一个很长的 Map (int, int[] ) ;
我使用map.entrySet(),它返回我的地图的设置视图
Map <Integer, ArrayList<Integer>>res = function() ;
System.out.println( res.entrySet() ) ;
Run Code Online (Sandbox Code Playgroud)
我想在新行上显示每个条目:
[1=[1, 47, 432, 433, 527, 678, 679, 680, 820, 904],
2=[1, 31, 47, 66, 118, 139, 194, 195, 196, 217]
3 = [........................],
10 = [........................],
但我把它全部打印在一行上(它很长):
[1=[1, 47, 432, 433, 527, 678, 679, 680, 820, 904], 2=[1, 31, 47, 66, 118, 139, 194, 195, 196, 217], 3 =[123,23,……],…………
如何让我的设置在新行上打印每个键值对? 或者默认情况下逗号在逗号之后并且在一行中?
Java 5 http://docs.oracle.com/javase/1.5.0/docs/api/java/util/SortedMap.html
Java 6 https://docs.oracle.com/javase/6/docs/api/java/util/SortedMap.html
正如您所看到的,自Java 6以来,这三个api被覆盖了.谁能告诉我做出这样改变的目的是什么?
如何从`Map中提取整数数组的长度?
Map <Integer, ArrayList<Integer>> res = function() ;
for (Map.Entry entry : res.entrySet()) {
System.out.println(entry.getValue());
}
Run Code Online (Sandbox Code Playgroud)
做System.out.println(entry.getValue().size());不起作用.
我有一个方法,它返回散列图的hashmap
HashMap<String, HashMap<String, String>> mapofmaps = abcd(<String>, <Integer>);
Run Code Online (Sandbox Code Playgroud)
我试图使用以下代码打印外部hashmap
for (Entry<String, HashMap<String, String>> entry : mapofmaps.entrySet()) {
String key = entry.getKey();
System.out.println(key);
HashMap<String, String> value = entry.getValue();
System.out.println(key + "\t" + value);
}
Run Code Online (Sandbox Code Playgroud)
我想迭代内部地图.那里的入口变量是什么(代码中的???).
for (Entry<String, HashMap<String, String>> entry : mapofmaps.entrySet()) {
String key = entry.getKey();
System.out.println(key);
for(Entry<String, HashMap<String, String>> entry : ????.entrySet()){
HashMap<String, String> value = entry.getValue();
System.out.println(key + "\t" + value);
}}
Run Code Online (Sandbox Code Playgroud)
我打印哈希图的逻辑是否正确?或者有更好的方法吗?
我正在使用一个函数Map.entrySet()。当我使用import java.util.*它时,会出现找不到符号错误。但是,当我这样做时,import java.util.Map.Entry它会编译。不应该包括“*”Map.Entry?
我错过了什么吗?
使用导入的底线java.util.*给了我找不到符号错误。对于相同的代码导入java.Map.Entry;没有。为什么?
谢谢你。