Java集合研究一:Set与Map
来源:互联网 发布:佛教的软件 编辑:程序博客网 时间:2024/06/06 01:05
Set代表一种无序集合,集合元素不可重复;Map代表一种多个key-value对组成的集合
从Set和Map的继承体系图看,如果从名称分析,Set和Map有着千丝万缕的联系。并且从JDK中提供的Map接口中,你会发现提供了这样一个方法: Set<K> keySet();这就说明了,如果抛开Map中的value,那么Map中的所有key的实际上就是一个Set集合,而且我们查询的时候常常是通过key来查找value,那么我们可以将value和key绑定在一起,将value看成是key的附属物,那么你会惊奇的发现,其实Map就是一个Set集合,因此我们可以认定Map是Set的扩展,是一种特殊的Set集合。下面将尝试用Set扩展成Map
import java.util.HashSet;import java.util.Iterator;import java.util.Map;public class SimpleEntry <K,V> implements Map.Entry<K,V>,java.io.Serializable{private final K key;private V value;public SimpleEntry(K key, V value){this.key = key;this.value = value;}public SimpleEntry(Map.Entry<? extends K, ? extends V> entry){this.key = entry.getKey();}//获取Keypublic K getKey(){return this.key;}//获取valuepublic V getValue(){return this.value;}//改变key-value的value值public V setValue(V value){V oldValue = this.value;this.value = value;return oldValue;}//根据key比较两个SimpleEntry是否相等public boolean equals(Object o){if(o == this){return true;}if(o.getClass() == SimpleEntry.class){SimpleEntry se = (SimpleEntry)o;return se.getKey().equals(getKey());}return false;}//根据key计算hashCodepublic int hashCode(){return key == null ? 0 : key.hashCode();}public String toString(){return key + "=" + value;}} //继承HashSet实现一个Map public class SetToMap<K, V> extends HashSet<SimpleEntry<K, V>>{//实现清空所有key-value对的方法public void clear(){super.clear();}//判断是否包含某个keypublic boolean containsKey(K key){return super.contains(new SimpleEntry<K, V>(key, null));} //判断是否包含某个valuepublic boolean containsValue(V value){for(SimpleEntry<K, V> se : this){if(se.getValue().equals(value));return true;}return false;}//根据指定key取出对应的valuepublic V get(Object key){for(SimpleEntry<K, V> se :this){if(se.getKey().equals(key)){return se.getValue();}}return null;}//将指定key-value对放入集合中public V put(K key, V value){add(new SimpleEntry<K ,V>(key, value));return value;}//将另一Map的key-value对放入该Map中public void putAll(Map<? extends K, ? extends V> m){for(K key : m.keySet()){add(new SimpleEntry<K, V>(key, m.get(key)));}}//根据指定key删除key-value对public V removeEntry(Object key){for(Iterator<SimpleEntry<K, V>> it = this.iterator(); it.hasNext(); ){SimpleEntry<K, V> en = (SimpleEntry<K, V>) it.next();if(en.getKey().equals(key)){V v = en.getValue();it.remove();return v;}}return null;}//获取该Map中包含多少个key-value对public int size(){return super.size();}}
0 0
- Java集合研究一:Set与Map
- java 集合set与Map
- set 集合与 map集合
- JAVA集合专题 <一> List Map Set 用法和特性
- 【Java集合框架】Map与Set的有序与无序
- List、Map与Set集合
- 集合:set 与 映射 map
- java集合 set list map
- [java]集合 list set map
- java集合:set 和 map
- java集合 list set map
- java集合set,list、map
- Java list-set-map集合
- java集合lis,set,map
- java集合(list,set,map)
- java 集合 List Map Set
- java集合list,set,map区别与联系
- java基础复习-map与collection set+list集合总结
- 第四章
- Linux初始化
- 利用OpenCV霍夫变换检测出圆
- view在UIViewController中的生命周期
- IPTables工具及其与netfilter关系介绍
- Java集合研究一:Set与Map
- hiredis api学习
- iOS: Network SSL相关问题
- 第四题
- UE/UI设计流程
- 解决form post->servlet中文乱码
- poj 1087 A Plug for UNIX isap
- log4j的配置与使用
- devstack多节点时间不一致导致服务无法up