JAVA类集(2)简单操作
来源:互联网 发布:学网络编程 编辑:程序博客网 时间:2024/06/05 20:01
本博文将简单简单讲解Java类集的使用.
在整个JAVA类集中,最常用的类集接口是:
Collection,List,Set,Map,Iterator,ListIterator,Enmueration,SortedSet,SortedMap,Queue,Map.Entry
上一篇博文,简单讲解了单值存储类集的使用.
http://blog.csdn.net/haiyang_duan/article/details/76851429
那么本博文,将简单讲解键值对类集的使用.
一. Map
二. Map.Entry
从之前的内容知道,在Map的操作中,所有的内容都是通过key–>value的形式保存的,那么对于集合来讲,实际上是将key–>value的数据保存在了Map.Entry的实例之后,再在Map集合中插入一个Map.Entry的实例化对象.
提示:
在Map的一般操作中,如增加或删除元素时,不用使用Map.Entry接口,但是在将Map的全部数据输出时,就必须使用Map.Entry接口.
三. Map常用子类
Map的常用子类有:
HashMap,Hashtable,TreeMap,WeakHashMap,IdentityHashMap
HashMap:无序存放,新的操作类,key不允许重复
Has和table:无序存放,旧的操作类,key不允许重复
TreeMap:可以排序的Map集合,按集合中的key排序,key值不允许重复
WeakHashMap:弱引用的Map集合,当集合中的内容不再使用时清除掉无用的数据,使用gc进行回收.
IdentityHashMap:Key可以重复的Map集合
3.1 HashMap
HashMap是Map接口的子类,直接使用其为Map接口实例化即可.
增加内容:put(Object key,Object value) 取出内容:get(E key) 判断key是否存在:containsKey(Object key) 判断value是否存在:containsValue(Object value) 输出全部的key:keySet() + Iterator 输出全部的value:values() + Iterator
3.2 Hashtable
HashMap也是一个Map的集合,与Vector退出的时间一样,都属于旧的操作类.
HashMap与Hashtable的区别:
3.3 TreeMap
之前的类在存放数据时并未对其进行排序,而TreeMap的主要功能是按照Key进行排序.
注意:在使用自定义类作为key时,需要实现Comparable接口,否则会出现类转换异常
3.4 WeakHashMap
之前的类使用的都是强类型的引用,即所有的数据不管使用与否,都会保存下来,但是弱引用类型就不一样了,会自动清理暂时不使用的数据.
对象的引用类型分为四类:
强引用:当内存不足时,JVM宁可出现OutOfMemeryError错误而停止程序也不会回收对象来释放空间.
软引用:当内存不足时,会回收这些对象的内存,用来实现内存敏感的高速缓存.
弱引用:无论内存是否紧张,被垃圾回收器发现立即回收.
虚引用:和没有任何引用一样.
3.5 IdentityHashMap
IdentityHashMap时key可以重复的Map集合.之前的Map的子类,如HashMap的key是不能重复的,否则会覆盖掉重复的内容.
只要IdentityHashMap的key对象的地址不同,就不认为是相同的key,就可以进行存储.
四. Map接口的使用注意事项
4.1 不能直接使用迭代输出Map中的全部内容
Iterator或foreach一次只能找到一个值,而Map中存放的是一对值,所以不能直接进行迭代输出,如果非要进行迭代输出,则必须按照以下步骤进行:
(1)将Map的势力通过entrySet()方法变为Set接口对象.
(2)通过Set实例为Iterator实例化.
(3)通过Iterator迭代输出,每个内容都是Map.Entry的当对象.
(4)通过Map.Entry进行key–>value的分离.
package cn.mysql;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;public class MapDemo { public static void main(String[] args) { Map<String, String> map = new HashMap<String,String>(); map.put("nihao", "beijing"); map.put("hello", "shanghai"); map.put("hello", "world"); Set<Map.Entry<String, String>> entry = map.entrySet(); Iterator<Map.Entry<String, String>> iter = entry.iterator(); while(iter.hasNext()){ Map.Entry<String, String> next = iter.next(); System.out.println(next.getKey() + "-->" + next.getValue()); } //或者使用foreach迭代输出 for(Map.Entry<String, String> me : map.entrySet()){ System.out.println(me.getKey() + "-->" + me.getValue()); } }}
4.2 直接使用非系统类作为key
如果要想使用自定义的对象表示key,则对象所在的类一定要覆写equals()和hashCode()方法,否则无法找到对应的value.
五. SortedMap接口
TreeMap是此接口的一个子类,属于可排序Map
- JAVA类集(2)简单操作
- JAVA类集(1)简单操作
- JAVA Stream 简单操作
- Java文件简单操作
- java IO简单操作
- Java简单文件操作
- Java简单文件操作
- java简单操作mongodb
- java字符串简单操作
- java简单操作zookeeper
- java简单操作 ldap
- Java-简单操作Excel
- java简单操作mongodb
- Java字符串简单操作
- java 简单的位操作
- JAVA 简单操作XML 写值读值
- java简单读写文件操作
- Java 文件操作简单demo
- 简单防止多次点击,例如防止弹出两个相同popwidow
- HBase1.1.2增删改查scala代码实现
- 2017.8.08 SSL 模拟赛
- python中的私有化
- A
- JAVA类集(2)简单操作
- leetcode--Sqrt(x)
- SpringMVC返回Json失败,请检查是否配置了Jackson
- 【php中的curl】php中curl的详细解说
- MUI Android分享功能
- windows 查看端口占用
- 正则化方法:L1和L2 regularization、数据集扩增、dropout
- 整数中1出现的次数
- 打通微信通信第一步