如何将Java中的Set集合转换为Map集合?

更新于
2026-10-12 07:55:57
1阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计519个文字,预计阅读时间需要3分钟。

如何将Java中的Set集合转换为Map集合?

为了将Set集合扩展为Map集合,我们可以定义一个SimpleEntry类,该类代表一个key-value对。当Set集合中的所有元素都是SimpleEntry对象时,我们可以将其视为一个Map来使用。

javapackage ListAndS;

class SimpleEntry { private K key; private V value;

public SimpleEntry(K key, V value) { this.key=key; this.value=value; }

public K getKey() { return key; }

public V getValue() { return value; }

public void setKey(K key) { this.key=key; }

public void setValue(V value) { this.value=value; }}

为了把Set集合扩展为一个Map集合,我们可以考虑定义一个SimpleEntry类,该类代表一个key-value对。当Set集合中的元素全是SimpleEntry对象的时候,那么它就可以当成Map来使用。

package ListAndSet; import java.io.Serializable; import java.util.Map; import java.util.Objects; /** * Created by wang on 16-4-23. */ public class SimpleEntry implements Map.Entry ,Serializable { private K key; private V value; public SimpleEntry(K key,V value){ this.key = key; this.value = value; } public SimpleEntry(Map.Entry entry){ this.key = entry.getKey(); this.value = entry.getValue(); } @Override public K getKey() { return key; } @Override public V getValue() { return value; } @Override public V setValue(V value) { V oldValue = this.value; this.value = value; return oldValue; } public boolean equals(Object object){ if(object == this){ return true; } if(object.getClass() == SimpleEntry.class){ SimpleEntry se = (SimpleEntry) object; return se.getKey().equals(getKey()); } return false; } public int hashCode(){ return key == null?0:key.hashCode(); } @Override public String toString() { return key+"="+value; } } 继承HashSet实现一个Map

package ListAndSet; import java.util.HashSet; import java.util.Iterator; import java.util.Map; /** * Created by wang on 16-4-23. */ public class Set2Map extends HashSet > { @Override public void clear() { super.clear(); } //判断是否包含某个key public boolean containsKey(K key){ return super.contains(new SimpleEntry (key,null)); } //判断是否包含某个value public boolean containsValue(V value){ for(SimpleEntry se :this){ if(se.getValue().equals(value)){ return true; } } return false; } //根据Key取出Value public V get(K key){ for(SimpleEntry se:this){ if(se.getKey().equals(key)){ return se.getValue(); } } return null; } //存放入该Map中 public V put(K key,V value){ add(new SimpleEntry (key,value)); return value; } //存放一个Map的key-value对放入该Map中 public void putAll(Map map){ for(K key:map.keySet()){ add(new SimpleEntry (key,map.get(key))); } } //根据指定key删除指定key-value对 public V removeEntry(K key){ for(Iterator > it = this.iterator();it.hasNext();){ SimpleEntry en = it.next(); if(en.getKey().equals(key)){ V v = en.getValue(); it.remove(); return v; } } return null; } public int size(){ return super.size(); } }

如何将Java中的Set集合转换为Map集合?

本文共计519个文字,预计阅读时间需要3分钟。

如何将Java中的Set集合转换为Map集合?

为了将Set集合扩展为Map集合,我们可以定义一个SimpleEntry类,该类代表一个key-value对。当Set集合中的所有元素都是SimpleEntry对象时,我们可以将其视为一个Map来使用。

javapackage ListAndS;

class SimpleEntry { private K key; private V value;

public SimpleEntry(K key, V value) { this.key=key; this.value=value; }

public K getKey() { return key; }

public V getValue() { return value; }

public void setKey(K key) { this.key=key; }

public void setValue(V value) { this.value=value; }}

为了把Set集合扩展为一个Map集合,我们可以考虑定义一个SimpleEntry类,该类代表一个key-value对。当Set集合中的元素全是SimpleEntry对象的时候,那么它就可以当成Map来使用。

package ListAndSet; import java.io.Serializable; import java.util.Map; import java.util.Objects; /** * Created by wang on 16-4-23. */ public class SimpleEntry implements Map.Entry ,Serializable { private K key; private V value; public SimpleEntry(K key,V value){ this.key = key; this.value = value; } public SimpleEntry(Map.Entry entry){ this.key = entry.getKey(); this.value = entry.getValue(); } @Override public K getKey() { return key; } @Override public V getValue() { return value; } @Override public V setValue(V value) { V oldValue = this.value; this.value = value; return oldValue; } public boolean equals(Object object){ if(object == this){ return true; } if(object.getClass() == SimpleEntry.class){ SimpleEntry se = (SimpleEntry) object; return se.getKey().equals(getKey()); } return false; } public int hashCode(){ return key == null?0:key.hashCode(); } @Override public String toString() { return key+"="+value; } } 继承HashSet实现一个Map

package ListAndSet; import java.util.HashSet; import java.util.Iterator; import java.util.Map; /** * Created by wang on 16-4-23. */ public class Set2Map extends HashSet > { @Override public void clear() { super.clear(); } //判断是否包含某个key public boolean containsKey(K key){ return super.contains(new SimpleEntry (key,null)); } //判断是否包含某个value public boolean containsValue(V value){ for(SimpleEntry se :this){ if(se.getValue().equals(value)){ return true; } } return false; } //根据Key取出Value public V get(K key){ for(SimpleEntry se:this){ if(se.getKey().equals(key)){ return se.getValue(); } } return null; } //存放入该Map中 public V put(K key,V value){ add(new SimpleEntry (key,value)); return value; } //存放一个Map的key-value对放入该Map中 public void putAll(Map map){ for(K key:map.keySet()){ add(new SimpleEntry (key,map.get(key))); } } //根据指定key删除指定key-value对 public V removeEntry(K key){ for(Iterator > it = this.iterator();it.hasNext();){ SimpleEntry en = it.next(); if(en.getKey().equals(key)){ V v = en.getValue(); it.remove(); return v; } } return null; } public int size(){ return super.size(); } }

如何将Java中的Set集合转换为Map集合?