java学习——集合框架(泛型,Map)
泛型:
。。。
Map:一次添加一对元素。Collection 一次添加一个元素。
Map也称为双列集合,Collection集合称为单列集合。
其实map集合中存储的就是键值对。
map集合中必须保证键的唯一性。
常用方法:
1,添加。
value put(key,value):返回前一个和key关联的值,如果没有返回null.
2,删除。
void clear():清空map集合。
value remove(key):根据指定的key翻出这个键值对。
3,判断。
boolean containsKey(key):
boolean containsValue(value):
boolean isEmpty();
4,获取。
value get(key):通过键获取值,如果没有该键返回null。
当然可以通过返回null,来判断是否包含指定键。
int size(): 获取键值对的个数。
- public class demo {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Map<Integer,String> map = new HashMap<Integer,String>();
- method(map);
- }
- public static void method(Map<Integer,String> map){//学号和姓名
- // 添加元素。
- System.out.println(map.put(8, "wangcai"));//null
- System.out.println(map.put(8, "xiaoqiang"));//wangcai 存相同键,值会覆盖。
- map.put(2,"zhangsan");
- map.put(7,"zhaoliu");
- //删除。
- System.out.println("remove:"+map.remove(2));
- //判断。
- System.out.println("containskey:"+map.containsKey(7));
- //获取。
- System.out.println("get:"+map.get(6));
- System.out.println(map);
- /*控制台打印如下
- null
- wangcai
- remove:zhangsan
- containskey:true
- get:null
- {7=zhaoliu, 8=xiaoqiang}*/
- }
- }
取出map中所有元素:
一、通过keySet方法获取map中所有的键所在的Set集合,在通过Set的迭代器获取到每一个键,
在对每一个键通过map集合的get方法获取其对应的值即可。
Set<K> keySet() 返回此映射中包含的键的 Set 视图。
- public class demo {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Map<Integer,String> map = new HashMap<Integer,String>();
- method(map);
- }
- public static void method(Map<Integer,String> map){//学号和姓名
- map.put(8,"zhaoliu");
- map.put(2,"zhaoliu");
- map.put(7,"xiaoqiang");
- map.put(6,"wangcai");
- Set<Integer> keySet = map.keySet();
- Iterator<Integer> it = keySet.iterator();
- while(it.hasNext()){
- Integer key = it.next();
- String value = map.get(key);
- System.out.println(key+":"+value);
- }
- /*控制台结果显示:
- 2:zhaoliu
- 6:wangcai
- 7:xiaoqiang
- 8:zhaoliu*/
- }
- }
二、通过Map转成set就可以迭代。找到了另一个方法,entrySet。
该方法将键和值的映射关系作为对象存储到了Set集合中,而这个映射关系的类型就是Map.Entry类型(结婚证)
Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 视图。
Collection<V> values() 返回此映射中包含的值的 Collection 视图。
- public class demo {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Map<Integer,String> map = new HashMap<Integer,String>();
- method(map);
- }
- public static void method(Map<Integer,String> map){//学号和姓名
- map.put(8,"zhaoliu");
- map.put(2,"zhaoliu");
- map.put(7,"xiaoqiang");
- map.put(6,"wangcai");
- Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
- Iterator<Map.Entry<Integer, String>> it = entrySet.iterator();
- while(it.hasNext()){
- Map.Entry<Integer, String> me = it.next();
- Integer key = me.getKey();
- String value = me.getValue();
- System.out.println(key+"::::"+value);
- }
- /*2::::zhaoliu
- 6::::wangcai
- 7::::xiaoqiang
- 8::::zhaoliu*/
- //取出所有value值
- Collection<String> values = map.values();
- Iterator<String> it2 = values.iterator();
- while(it2.hasNext()){
- System.out.println(it2.next());
- }
- /*zhaoliu
- wangcai
- xiaoqiang
- zhaoliu*/
- }
- }
Map常用的子类:
|--Hashtable :内部结构是哈希表,是同步的。不允许null作为键,null作为值。
|--Properties:用来存储键值对型的配置文件的信息,可以和IO技术相结合。
|--HashMap : 内部结构是哈希表,不是同步的。允许null作为键,null作为值。
|--TreeMap : 内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。
HashMap:
- public class HashMapDemo {
- public static void main(String[] args) {
- /*
- * 将学生对象和学生的归属地通过键与值存储到map集合中。
- */
- HashMap<Student,String> hm = new HashMap<Student,String>();
- hm.put(new Student("lisi",38),"北京");
- hm.put(new Student("zhaoliu",24),"上海");
- hm.put(new Student("xiaoqiang",31),"沈阳");
- hm.put(new Student("wangcai",28),"大连");
- hm.put(new Student("zhaoliu",24),"铁岭");
- // Set<Student> keySet = hm.keySet();
- // Iterator<Student> it = keySet.iterator();
- Iterator<Student> it = hm.keySet().iterator();
- while(it.hasNext()){
- Student key = it.next();
- String value = hm.get(key);
- System.out.println(key.getName()+":"+key.getAge()+"---"+value);
- }
- }
- }
TreeMap:
- public class TreeMapDemo {
- public static void main(String[] args) {
- TreeMap<Student,String> tm = new TreeMap<Student,String>(new ComparatorByName());
- tm.put(new Student("lisi",38),"北京");
- tm.put(new Student("zhaoliu",24),"上海");
- tm.put(new Student("xiaoqiang",31),"沈阳");
- tm.put(new Student("wangcai",28),"大连");
- tm.put(new Student("zhaoliu",24),"铁岭");
- Iterator<Map.Entry<Student, String>> it = tm.entrySet().iterator();
- while(it.hasNext()){
- Map.Entry<Student,String> me = it.next();
- Student key = me.getKey();
- String value = me.getValue();
- System.out.println(key.getName()+":"+key.getAge()+"---"+value);
- }
- }
- }
未完...
java学习——集合框架(泛型,Map)的更多相关文章
- 十七、Java基础---------集合框架之Map
前两篇文章中介绍了Collection框架,今天来介绍一下Map集合,并用综合事例来演示. Map<K,V> Map<K,V>:Map存储的是键值对形式的元素,它的每一个元素, ...
- Java学习----集合框架总结
集合框架总结: Collection接口: Set接口: HashSet//对象必须实现hashCode方法,元素没有顺序呢,效率比LinkedHashSet高 LinkedHashSet//是Has ...
- Java学习——集合框架【4】
一.集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个层次. 实 ...
- java习题-集合框架-泛型
集合框架 一 去除List集合中的重复元素. 思路: 1,先创建一个临时容器.用于存储唯一性的元素.2,遍历原容器,将遍历到的元素到临时容器中去判断,是否存在.3,如果存在,不存储到临时容器,如果不存 ...
- java学习——集合框架(Collection,List,Set)
集合类的由来: 对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就使用集合容器进行存储. 集合特点:1,用于存储对象的容器.2,集合的长度是可变的.3,集合中不可以存储基本数据类型值. ...
- 【转】Java学习---集合框架那些事
[原文]https://www.toutiao.com/i6593220692525711885/ Arraylist 与 LinkedList 异同 1. 是否保证线程安全: ArrayList 和 ...
- Java自学-集合框架 泛型Generic
ArrayList上使用泛型 步骤 1 : 泛型 Generic 不指定泛型的容器,可以存放任何类型的元素 指定了泛型的容器,只能存放指定类型的元素以及其子类 package property; pu ...
- java的集合框架set 和map的深入理解
Java的集合框架之Map的用法详解 Map有两种比较常用的实现:HashMap 和 TreeMap. HashMap: HashMap 也是无序的,也是按照哈希编码来排序的,允许使用null 值和n ...
- Java集合框架之Map接口浅析
Java集合框架之Map接口浅析 一.Map接口综述: 1.1java.util.Map<k, v>简介 位于java.util包下的Map接口,是Java集合框架的重要成员,它是和Col ...
随机推荐
- java进程卡死问题
原文地址:http://stackoverflow.com/questions/28739600/jvm-hang-and-kill-3-jmap-failed tomcat进程出现了如下异常,并且卡 ...
- MySql密码丢失
windows下mysql密码忘记了 第一步:netstat -nat(可以查看mysql是否启动了,如果启动了,可以用输入net stop mysql(或者通过任务管理器结束进程)) 第二步:my ...
- centos6.5安装gcc6.1等c++环境
centos6.5安装gcc6.1等c++环境 1.获取gcc安装包并解压wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2tar ...
- Sudoku(回溯)
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 12075 Accepted: 6026 Special Judge ...
- 动态规划(方案还原):SGU 104 Little shop of flowers
花店橱窗布置问题 时间限制:3000 ms 问题描述(Problem) 假设你想以最美观的方式布置花店的橱窗,你有F束花,每束花的品种都不一样,同时,你至少有同样数量的花瓶,被按顺序摆成一行.花 ...
- 最小生成树问题(Kruskal 算法)(克鲁斯卡尔)
如图就是Kuskal算法 将图中的每条边按照权值从小到大排序,每次加起来就行,注意的是不要形成回路: 重点是如何用代码实现不能形成回路 看代码; #include <cstdio> #in ...
- SRM 404(1-250pt, 1-500pt)
DIV1 250pt 题意:对于1-9数字三角形如下图,设其为a[i][j],则a[i][j] = (a[i-1][j] + a[i-1][j+1]) % 10.现在对于某个数字三角形, 每行告诉你某 ...
- 最长回文 HDU 3068 (裸的Manacher)
直接看代码: ============================================================================================= ...
- Python中http请求方法库汇总
最近在使用python做接口测试,发现python中http请求方法有许多种,今天抽点时间把相关内容整理,分享给大家,具体内容如下所示: 一.python自带库----urllib2 python自带 ...
- WebService-通俗讲解
一.序言 大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成 分.但是不得不承认的是W ...