Java集合5
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:
作者:陈剑波
撰写时间:2019年06月18日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Map集合
Map集合使用键(key)值(value)来保存数据,其中值(value)可以重复,但键(key)必须是唯一,也可以为空,但最多只能有一个key为空,给定一个键和一个值,你可以将该值存储在一个Map对象里面,你可以通过键来访问对应的值。Map集合的主要实现类有HashMap、LinkedHashMap、TreeMap。
示例代码:
import java.util.Collection; |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.Map; |
import java.util.Set; |
|
/** |
* @author KO.ZERO HashMap和Hashtable都是Map接口的典型实现类。 区别: |
* Hashtable是线程安全的,HashMap是线程不安全的,所以HashMap比Hashtable的性能高一点。 |
* Hashtable不允许使用null作为key和value;但HashMap可以使用null作为key或value。 |
* HashMap和Hashtable判断两个value相等的标准:只要两个对象通过equals方法比较返回true即可。 |
*/ |
public class HashMapAndHashTable { |
public static void main(String[] args) { |
Map<Integer, String> map = new HashMap<Integer, String>(); |
// 添加元素 |
map.put(1, "鲁夫");// put(K key, V value):将指定的值与此映射中的指定键关联(可选操 作)。 |
map.put(2, "索隆"); |
map.put(3, "索隆"); |
map.put(4, "山治"); |
map.put(5, "堪平"); |
map.put(6, "乌索普"); |
// 可以添加相同的Key值,但是添加的value值会被前面的覆盖的,返回值是前一个,如果没有就返回null。 |
map.put(6, "乌索八"); |
System.out.println(map); |
Map<Integer, String> map2 = new HashMap<Integer, String>(); |
map2.put(7, "娜美"); |
map2.put(8, "罗宾"); |
map2.put(9, "白星"); |
map2.put(10, "薇薇"); |
// putAll(Map m):从指定映射中将所有映射关系复制到此映射中(可 选操作)。 |
map.putAll(map2); |
System.out.println(map); |
// containsKey(Object key):如果此映射包含指定键的映射关系,则返回 true。 |
System.out.println("containsKey:" + map.containsKey(8)); |
// containsValue(Object value):如果此映射将一个或多个键映射到指定值,则返回 true。 |
System.out.println("containsValue:" + map.containsValue("白星")); |
// size():返回此映射中的键值映射关系数。 |
System.out.println("集合大小:" + map.size()); |
// isEmpty():如果此映射未包含键值映射关系,则返回 true。 |
System.out.println("集合是否为空:" + map.isEmpty()); |
// get(Object key):返回指定键所映射的值;如果此映射不包含该键的 映射关系,则返回 null。 |
System.out.println("" + map.get(7)); |
// keySet():返回此映射中包含的键的 Set 视图。 |
Set<Integer> set = map.keySet();// 返回所有的key对象的Set集合 |
Iterator<Integer> iterator = set.iterator(); |
while (iterator.hasNext()) { |
Integer integer = (Integer) iterator.next(); |
// 使用get()方法返回指定键所映射的值。 |
System.out.print("keySet():"+"键:" + integer + " 值:" + map.get(integer) + " |"); |
} |
System.out.println(); |
// values():返回此映射中包含的值的 Collection 视图。 |
Collection<String> collection = map.values();// 获取所有的值 |
for (Iterator<String> iterator2 = collection.iterator(); iterator2 |
.hasNext();) { |
String string = iterator2.next(); |
System.out.print("values():"+"值:" + string + " |"); |
} |
System.out.println(); |
// entrySet():返回此映射中包含的映射关系的 Set 视图。 |
Set<Map.Entry<Integer, String>> entries = map.entrySet();//将map集合中的键值映射关系打包成一个对象 |
//Map.Entry对象通过Map.Entry对象的getKey, |
//getValue获取其键和值。 |
Iterator<Map.Entry<Integer, String>> iterator2 = entries.iterator(); |
while (iterator2.hasNext()) { |
Map.Entry<java.lang.Integer, java.lang.String> entry = (Map.Entry<java.lang.Integer, java.lang.String>) iterator2 |
.next(); |
Integer key = entry.getKey();//getKey():返回与此项对应的键。 |
String value = entry.getValue();//getValue():返回与此条目对应的值 |
System.out.print("entrySet():"+"键:" + key + "值:" + value + " |"); |
} |
System.out.println(); |
// remove(Object key):如果存在一个键的映射关系,则将其从此映射中移 除(可选操作)。 |
System.out.println("删除键10,包括关联对象:"+map.remove(10)); |
System.out.println(map); |
// clear():从此映射中移除所有映射关系(可选操作)。 |
map2.clear();//清空集合 |
System.out.println("map2="+map2); |
} |
} |
运行结果:
{1=鲁夫, 2=索隆, 3=索隆, 4=山治, 5=堪平, 6=乌索八} |
{1=鲁夫, 2=索隆, 3=索隆, 4=山治, 5=堪平, 6=乌索八, 7=娜美, 8=罗宾, 9=白星, 10=薇薇} |
containsKey:true |
containsValue:true |
集合大小:10 |
集合是否为空:false |
娜美 |
keySet():键:1 值:鲁夫 |keySet():键:2 值:索隆 |keySet():键:3 值:索隆 |keySet():键:4 值:山治 |keySet():键:5 值:堪平 |keySet():键:6 值:乌索八 |keySet():键:7 值:娜美 |keySet():键:8 值:罗宾 |keySet():键:9 值:白星 |keySet():键:10 值:薇薇 | |
values():值:鲁夫 |values():值:索隆 |values():值:索隆 |values():值:山治 |values():值:堪平 |values():值:乌索八 |values():值:娜美 |values():值:罗宾 |values():值:白星 |values():值:薇薇 | |
entrySet():键:1值:鲁夫 |entrySet():键:2值:索隆 |entrySet():键:3值:索隆 |entrySet():键:4值:山治 |entrySet():键:5值:堪平 |entrySet():键:6值:乌索八 |entrySet():键:7值:娜美 |entrySet():键:8值:罗宾 |entrySet():键:9值:白星 |entrySet():键:10值:薇薇 | |
删除键10,包括关联对象:薇薇 |
{1=鲁夫, 2=索隆, 3=索隆, 4=山治, 5=堪平, 6=乌索八, 7=娜美, 8=罗宾, 9=白星} |
map2={} |