您的位置:首页 > 编程语言 > Java开发

Java自学之路-Java基础教程-50:Java的键值类Map及哈希表结构HashMap

2018-03-21 12:57 621 查看
Java中有一种很重要的类Map,用来存储键值对数据。比如,url=http://www.baidu.com这样的数据,可以把url当作是键,http://www.baidu.com当做是值。一个键对应一个值,这种一一对应的关系,而且键都是唯一的,就可以用Map存储。Map有HashMap和TreeMap,其中HashMap很常用。
Map newMap = new HashMap()这样就创建了一个Map类型的对象newMap。把数据存入这个newMap,可以使用put()方法。newMap.put("baidu", "http://www.baidu.com");
newMap.put("163", "http://www.163.com");这个Map对象中存入了baidu和163两个url,它们的值分别为http://www.baidu.com和http://www.163.com。
要从Map中取出数据,可以使用Map的get()方法。String value = (String) newMap.get("baidu");
System.out.println(value);
从Map中取出的值会是http://www.baidu.com,这是一个字符串String,但get()方法这里返回的是Object类型的,所以使用强转。
Map也是支持泛型的,这一点和List类似。使用泛型创建Map对象可以Map newMap = new HashMap()这样定义,那么get()方法取值时就不需要强转了。Map newMap = new HashMap();
newMap.put("baidu", "http://www.baidu.com");
newMap.put("163", "http://www.163.com");

String value = newMap.get("baidu");
System.out.println(value);

Map和List一样也可以存多个记录,如果要从Map中把所有记录都取出来,就要用到entrySet()方法了。这个方法返回一个Set的类型,可以看出这是一个存着Entry类型的Set类对象。Set entrySet = newMap.entrySet();
先看这个Set类。Set这种类和List又很相似。List是一种有顺序的列表,而Set则是无顺序的列表。比如创建一个Set对象,可以使用Set newSet=new HashSet()这样创建,往Set中增加数据同List一样,用add()方法。
那Entry又是什么呢?Entry是Map存放数据的格式,其实它就是Map类里面的一个内部类。Map类里定义这个内部类,用来存储键值对数据,所以在Map中存数据,实际上就是在Entry里存数据。当引入Entry这个类时,可以看到import java.util.Map.Entry,所以Entry实际上应该是Map.Entry这样的一个内部类。Map中要存放多个Entry,所以Map的entrySet()方法返回了一个Set类型的对象,也就是Map把数据存在Entry里,又把Entry存在Set里。
我们可以使用for循环把Set中的数据取出来。Set entrySet = newMap.entrySet();
for (Entry entry : entrySet) {
System.out.println("key: " + entry.getKey());
System.out.println("value: " + entry.getValue());
}
打印结果如下:key: baidu
value: http://www.baidu.com key: 163
value: http://www.163.com
这种键值对的数据以后会经常用到,比如属性名和属性值一一对应的多条记录,就可以用Map存放。Map中的数据要保证键是唯一的,如果以相同的键存放多个值,那么Map中只会把最新的值以这个键存起来。
newMap.put("163", "http://www.163.com");
newMap.put("163", "http://163.com");
这样如果多次存放了163这个键,最后取出来的值一定只会是http://163.com,最后一次存的值会覆盖上一次存的值,也就保证了Map中数据的键值唯一对应的关系。



具有OCR和ASR功能,可以识别图片和录音中文字,并有多国语言翻译功能,可以作为便签或笔记,类似微博的图文应用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐