先请教个小问题
hashmap如果put(key)的时候表里已经有一个相同的key则value会被替代
这里确实是value被替代吗 key的位置在hashmap里是否会改变?嗯,回归正题
现在是有多key相同 但是value保证唯一性
类型: K int V 一个类
这个是不能用hashmap储存了
但是获取value的时候只有key的值 而没有value的任何数据
只需要获取在第一位的key的value值即可
请问用java自带的类型能否实现呢。。如果不能的话请高手指点一下思路
非常感谢!~
hashmap如果put(key)的时候表里已经有一个相同的key则value会被替代
这里确实是value被替代吗 key的位置在hashmap里是否会改变?嗯,回归正题
现在是有多key相同 但是value保证唯一性
类型: K int V 一个类
这个是不能用hashmap储存了
但是获取value的时候只有key的值 而没有value的任何数据
只需要获取在第一位的key的value值即可
请问用java自带的类型能否实现呢。。如果不能的话请高手指点一下思路
非常感谢!~
value是一个类。。key只是int型的一个整数
一个为int型的key
一个为value(你自定义的类)。
然后把它放到个List里面去呢
这样的话根据key来取值就需要遍历整个list了。执行的效率应该是个考虑的问题!!!
如果这个集合还带有get put containsKey
类似的方法就最好了 实在是方便查询
按照你的想法,你在put的时候做一个判断即可。
if(!map.containsKey(xx)){
map.put(xx, yourObject);
}
很多时候换个思维方式就解决问题了.............
一个key对应一个value``` 另外key有相同的 不能用Map呢
取了第一个key的value之后会把这个key消除 等于说下次再去就是取第二个相同key的value的
不好意思 我没把条件说完整。。
嗯 谢谢你 不过由于取了第一个key的value之后会把这个key消除 所以也要用到剩下的相同key的value的··
List<ValueClass> l = get(key);
l.add(value);when get:
List<ValueClass> l = get(key);
value = l[0];
l.remove(0);
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MapValueListTest {
private static class Person{
private int id;
private String name;
public Person(int id,String name){
this.id = id;
this.name = name;
}
public String toString(){
return "[id:"+id+",name:"+name+"]";
}
}
private static class MapValueList<K,V>{
private Map<K,List<V>> map = new HashMap<K,List<V>>();
public void put(K key,V p){
List<V> valueList = map.get(key);
if(valueList == null){
valueList = new ArrayList<V>();
map.put(key, valueList);
}
valueList.add(p);
}
public V get(K key){
List<V> valueList = map.get(key);
if(valueList == null)return null;
return valueList.get(0);
}
public List<V> getAll(K key){
List<V> valueList = map.get(key);
if(valueList == null)return null;
return valueList;
}
public V remove(K key){
List<V> valueList = map.get(key);
if(valueList == null)return null;
return valueList.remove(0);
}
public void removeAll(K key){
map.remove(key);
}
public boolean containsKey(K key){
return map.containsKey(key);
}
}
public static void main(String[] args) {
MapValueList<Integer,Person> map = new MapValueList<Integer,Person>();
map.put(1, new Person(1,"aaa"));
map.put(1, new Person(2,"bbb"));
map.put(2, new Person(3,"ccc"));
System.out.println(map.containsKey(1));
System.out.println(map.get(1));
System.out.println(map.getAll(1));
map.remove(1);
System.out.println(map.getAll(1));
map.remove(1);
System.out.println(map.getAll(1));
map.removeAll(2);
System.out.println(map.getAll(2));
}}