关于Set和Collection的区别
老师,为什么生成key的set集是:Set<String> keyset=map.keySet();
生产 value的set集 却必须是 collection的格式: Collection<String> valueset=map.values();
为什么会有这种差异,这两种格式有区别?
key值唯一对应value,是不是代表着不能通过value值反查到key?
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class KeyValueDemo {
public static void main(String[] args) {
// 生产HashMap
Map<String, String> map=new HashMap<String, String>();
map.put("苹果", "apple");
map.put("桃子", "peach");
map.put("樱桃", "cherry");
getKV(map);
getK(map);
getV(map);
}
//生成方法使用entry同时调用key value值
public static void getKV(Map<String, String> map) {
Set<Entry<String, String>> entryset= map.entrySet();//获取entry的set集合
//获取Entry的set集合的迭代器
// Iterator <Entry<String, String>> it=entryset.iterator();
// while(it.hasNext()) {
// Entry<String, String> entry=it.next();
// System.out.println(entry.getKey()+" "+entry.getValue());
// }
for(Entry<String, String>entry:entryset) {
System.out.println(entry.getKey()+" "+entry.getValue());
}
}
//生产key,调用value
public static void getK(Map<String, String> map) {
Set<String> keyset=map.keySet();
for(String key:keyset) {
System.out.println(key+" "+map.get(key));
}
}
//生产value,调用value
public static void getV(Map<String, String> map) {
Collection<String> valueset=map.values();
for(String value:valueset) {
System.out.println(map.get()+" "+value);
}
}
}
正在回答
同学你好,1. Collection 接口存储一组可重复,无序的对象,并Collection是List和Set的父接口,List是有序可重复、Set是无序、不可重复!
2. 是的,同学理解是正确的,Collection 是可重复的,所以无法通过value查询key值。
祝学习愉快!
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星