本文目录一览:
- java里老是说key,这是什么东东?
- [java map怎么获取key](#java map怎么获取key)
- java中Map集合如何修改里面的Key值?
- [java 为什么要一个key 多个value](#java 为什么要一个key 多个value)
- [JAVA基础 key在这里干什么?搞不懂](#JAVA基础 key在这里干什么?搞不懂)
- java怎么获取map的key
java里老是说key,这是什么东东?
容器中的key就是,key-value这两个在容器中,key是你对象的一个命名,value就是对象本身。相当于字典一样从key找value。
java map怎么获取key
Map map = new Map();
Set set = map.entrySet();
Iterator i = set.iterator();
while(i.hasNext()) {
Map.Entry entry1 = (Map.Entry)i.next();
System.out.println(entry1.getKey());
}
这样最终输出的就是map的key值。
java中Map集合如何修改里面的Key值?
修改map的key但是不改变该key对应的value值,可以使用:
map.put("key2", map.remove("key1"));
比如:
map.put("key1", "value1"); // 此时:key1--value1
map.put("key2", map.remove("key1")); // 此时:key2--value1
java 为什么要一个key 多个value
不知道楼主描述的具体是啥意思,
Map<String, Object> map = new HashMap<String, Object>();
map.put("key", "value");
对于当前key这个值如果是多个话,hash算法不好找到对应的值,就丧失了map特性的最大效率值。 不要去从字面上去理解一个key对应多个value,而是从效率上面去考虑。 然后顺便告诉楼主,这世上没有最牛逼的算法,只有最适合的算法。什么样的场景对应什么样的思路,这就是编程思想。
JAVA基础 key在这里干什么?搞不懂
key在这里是你要查找的内容(字符串)。 举个例子:
String str = "abcdef";
String key = "cde";
int index = 1;
这时:
str.indexOf(key, index)
就返回2。因为我们从"abcdef"的index=1(b的位置)开始找,找到了"cde","cde"在str中的index=2。
此时,我们要继续找的话就要从 str
的 index = 2 + 3 的地方开始找。
2代表的是 "cde"在str中的index
3代表的是"cde"的长度,也就是key.length()
。
java怎么获取map的key
java 获取map中所有的key和value值:
java.util.Iterator it = map.entrySet().iterator();
while(it.hasNext()) {
java.util.Map.Entry entry = (java.util.Map.Entry)it.next();
entry.getKey(); // 返回对应的键
entry.getValue(); // 返回对应的值
}
以前遍历Map key-value比较习惯的方式是先获取Map中的所有key值,然后根据key,依次从Map中去数据,基本方式如下:
Map<String, String> testData = new HashMap<String, String>();
Set<String> keys = testData.keySet();
for(String key : keys) {
System.out.println(key + " " + testData.get(key));
}
上述是第一种方法,原来一直用上述方法主要是自己有点懒,有了一种方法后就觉得够用的了,今天看源码,发现Map接口中还有一个Entry<K,V>
的接口,对应的还有一个Set<Map.Entry<K, V>> entrySet();
方法。
也就是说其实Map中的每条key-value数据对应着一个Entry,这样的话遍历Map其实就是要取出每个Entry,也就有了第二种遍历方法:
Set<Map.Entry<String, String>> entries = testData.entrySet();
for (Map.Entry<String, String> entry : entries) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
当数据量少时,上述两种方法的效率是差不多的,当数据比较多时,第二种还是要比第一种快。
当然上述说的两种遍历针对的情况是遍历出key-value,如果是只想遍历key或value,大可不必用以上的方法了,Map中提供了Set<K> keySet()
和Collection<V> values()
。