从Java问题映射界面

Kri*_*anB 3 java

我一直在想java.util中的Map.

为什么values()方法返回一个Collection而keySet和entrySet返回一个Set?

集合和集合的优点/缺点是什么?

Dan*_*Dan 6

集合保证给定条目只能存在一次.收藏品没有.由于Map在值方面没有唯一性保证,因此它们的集合根本不是集合,而是必须是集合.

  • 确切地说 - 虽然键的集合和条目的集合不能有重复,因此可以声明为Set. (2认同)

coo*_*ird 6

这不是一个优点和缺点的问题 - 它是地图的键,值和条目代表重要的.

地图中的键是唯一的

a Map中的键是唯一的 - 也就是说,a中不会有重复的键Map.Collection确保不存在重复的A 是a Set.

因此,Set通过该keySet方法返回密钥.

地图中的值不一定是唯一的

在另一方面,该Map并不一定是唯一的.

例如,我们可以在地图中有一个条目,其中键值"fruit"映射到该值"apple",并且还有另一个条目,其中键"computer"映射到该值"apple":

map {
  key:"fruit"    -> value:"apple"
  key:"computer" -> value:"apple"
}
Run Code Online (Sandbox Code Playgroud)

允许在地图中具有重复值.

因此,我们不能使用a Set,因为必须所有条目都是唯一的.a值的一个很好的选择Map是返回一个普通的,Collection因为它不会对值的含义施加任何限制.

地图中的条目也是唯一的

这些条目Map是唯一的 - 它们是键和值的组合,由Map.Entry对象表示.由于此键值对是唯一的,因此Set通过该entrySet方法返回.

进一步阅读