关于Set和Collection的区别

关于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回答

同学你好,1. Collection 接口存储一组可重复,无序的对象,并Collection是List和Set的父接口,List是有序可重复、Set是无序、不可重复!

2. 是的,同学理解是正确的,Collection 是可重复的,所以无法通过value查询key值。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师