Java Map中keySet()和entrySet()方法的区别
地图接口存在于Java.util包中,它主要提供了三个方法KeySet()、entrySet()和values()。这些方法分别用于检索地图的键、地图的键值对以及地图的值。由于这些方法是地图接口的一部分,所以我们可以在所有实现地图接口的类中使用这些方法,比如TreeMap、HashMap和LinkedHashMap。
keySet()方法。
Java中的java.util.HashMap.keySet()方法是用来从散列图中包含的关键元素中创建一个集合。它基本上返回一个键的集合视图,或者我们可以创建一个新的集合并将键元素存储在其中。
语法:
hash_map.keySet()
参数: 该方法不接受任何参数。
返回值: 该方法返回一个具有哈希图键值的集合。
// Java program demonstrating use of keySet()
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.stream.Stream;
class GFG {
public static void main(String[] args)
{
// making map of Integer keys and String values
Map<Integer, String> map = new HashMap<>();
// adding the key-value pairs to map
map.put(1, "Geeks");
map.put(2, "For");
map.put(3, "Geeks");
// below are the different and simple ways out of
// many to iterate over the keySet()
// iterating the keySet() using iterator
Iterator<Integer> itr = map.keySet().iterator();
while (itr.hasNext())
{
System.out.print(itr.next() + " ");
}
System.out.println();
// iterating the keySet() using for loop
for (Integer key : map.keySet()) {
System.out.print(key + " ");
}
System.out.println();
// iterating over the keySet() by converting the map
// to the string
System.out.println(map.keySet().toString());
}
}
输出
1 2 3
1 2 3
[1, 2, 3]
entrySet()方法 :
Java中的java.util.HashMap.entrySet()方法是用来从散列图中包含的相同元素中创建一个集合。它基本上返回散列地图的集合视图,或者我们可以创建一个新的集合并将地图元素存储到其中。
语法:
hash_map.entrySet()
参数: 该方法不接受任何参数。
返回值: 该方法返回一个具有与哈希图相同元素的集合。
// Java program demonstrating use of entrySet()
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.stream.Stream;
class GFG {
public static void main(String[] args)
{
// making map of Integer keys and String values
Map<Integer, String> map = new HashMap<>();
// adding the key-value pairs to map
map.put(1, "Geeks");
map.put(2, "For");
map.put(3, "Geeks");
// below are the different and simple ways out of
// many to iterate over the entrySet()
// iterating the key value pair using for each loop
for (Map.Entry<Integer, String> entry :map.entrySet())
{
Integer key = (Integer)entry.getKey();
String value = entry.getValue();
System.out.println(key + "=" + value);
}
// iterating the key-value pairs using iterator
Iterator<Map.Entry<Integer, String> > itr = map.entrySet().iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
// iterating the key-value pairs using Stream.of()
// method
Stream.of(map.entrySet().toArray())
.forEach(System.out::println);
}
}
输出
1=Geeks
2=For
3=Geeks
1=Geeks
2=For
3=Geeks
1=Geeks
2=For
3=Geeks
keySet() | entrySet() |
---|---|
该方法返回地图中存在的所有键的Set视图,即它返回一个键的集合。 | 该方法返回地图中所有映射的Set视图,即返回一组键、值对。 |
如果地图发生任何变化,那么它们也可以在集上观察到,因为集是由地图支持的。 | 对于entrySet()方法,如果地图发生任何变化,那么它们也可以在set中观察到,因为set是由地图支持的。 |
如果使用keySet()遍历所有的地图对,那么keySet()的性能比entrySet()要差,因为对于每个键,我们必须使用get()函数来访问其相应的值。 | 当使用entrySet()遍历地图的所有对时,entrySet()的性能比keySet()好很多。 |
它的语法是 -: hashmap.keySet() | 它的语法是 -: hashmap.entrySet() |
它不接受任何参数。 | 它没有例外。 |