泛型:

。。。

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(): 获取键值对的个数。

  1. public class demo {
  2. public static void main(String[] args) {
  3. // TODO Auto-generated method stub
  4. Map<Integer,String> map = new HashMap<Integer,String>();
  5. method(map);
  6. }
  7. public static void method(Map<Integer,String> map){//学号和姓名
  8. // 添加元素。
  9. System.out.println(map.put(8, "wangcai"));//null
  10. System.out.println(map.put(8, "xiaoqiang"));//wangcai 存相同键,值会覆盖。
  11. map.put(2,"zhangsan");
  12. map.put(7,"zhaoliu");
  13. //删除。
  14. System.out.println("remove:"+map.remove(2));
  15. //判断。
  16. System.out.println("containskey:"+map.containsKey(7));
  17. //获取。
  18. System.out.println("get:"+map.get(6));
  19. System.out.println(map);
  20. /*控制台打印如下
  21. null
  22. wangcai
  23. remove:zhangsan
  24. containskey:true
  25. get:null
  26. {7=zhaoliu, 8=xiaoqiang}*/
  27. }
  28. }

取出map中所有元素:

一、通过keySet方法获取map中所有的键所在的Set集合,在通过Set的迭代器获取到每一个键,

  在对每一个键通过map集合的get方法获取其对应的值即可。

Set<K> keySet() 返回此映射中包含的键的 Set 视图。

  1. public class demo {
  2. public static void main(String[] args) {
  3. // TODO Auto-generated method stub
  4. Map<Integer,String> map = new HashMap<Integer,String>();
  5. method(map);
  6. }
  7. public static void method(Map<Integer,String> map){//学号和姓名
  8. map.put(8,"zhaoliu");
  9. map.put(2,"zhaoliu");
  10. map.put(7,"xiaoqiang");
  11. map.put(6,"wangcai");
  12.  
  13. Set<Integer> keySet = map.keySet();
  14. Iterator<Integer> it = keySet.iterator();
  15.  
  16. while(it.hasNext()){
  17. Integer key = it.next();
  18. String value = map.get(key);
  19. System.out.println(key+":"+value);
  20. }
  21. /*控制台结果显示:
  22. 2:zhaoliu
  23. 6:wangcai
  24. 7:xiaoqiang
  25. 8:zhaoliu*/
  26. }
  27. }

二、通过Map转成set就可以迭代。找到了另一个方法,entrySet。

  该方法将键和值的映射关系作为对象存储到了Set集合中,而这个映射关系的类型就是Map.Entry类型(结婚证)

  Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 视图。

   Collection<V> values() 返回此映射中包含的值的 Collection 视图。

  1. public class demo {
  2. public static void main(String[] args) {
  3. // TODO Auto-generated method stub
  4. Map<Integer,String> map = new HashMap<Integer,String>();
  5. method(map);
  6. }
  7. public static void method(Map<Integer,String> map){//学号和姓名
  8. map.put(8,"zhaoliu");
  9. map.put(2,"zhaoliu");
  10. map.put(7,"xiaoqiang");
  11. map.put(6,"wangcai");
  12.  
  13. Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
  14. Iterator<Map.Entry<Integer, String>> it = entrySet.iterator();
  15. while(it.hasNext()){
  16. Map.Entry<Integer, String> me = it.next();
  17. Integer key = me.getKey();
  18. String value = me.getValue();
  19. System.out.println(key+"::::"+value);
  20. }
  21. /*2::::zhaoliu
  22. 6::::wangcai
  23. 7::::xiaoqiang
  24. 8::::zhaoliu*/
  25. //取出所有value值
  26. Collection<String> values = map.values();
  27. Iterator<String> it2 = values.iterator();
  28. while(it2.hasNext()){
  29. System.out.println(it2.next());
  30. }
  31. /*zhaoliu
  32. wangcai
  33. xiaoqiang
  34. zhaoliu*/
  35. }
  36. }

Map常用的子类:
|--Hashtable :内部结构是哈希表,是同步的。不允许null作为键,null作为值。
  |--Properties:用来存储键值对型的配置文件的信息,可以和IO技术相结合。
|--HashMap : 内部结构是哈希表,不是同步的。允许null作为键,null作为值。
|--TreeMap : 内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。

HashMap:

  1. public class HashMapDemo {
  2. public static void main(String[] args) {
  3. /*
  4. * 将学生对象和学生的归属地通过键与值存储到map集合中。
  5. */
  6. HashMap<Student,String> hm = new HashMap<Student,String>();
  7.  
  8. hm.put(new Student("lisi",38),"北京");
  9. hm.put(new Student("zhaoliu",24),"上海");
  10. hm.put(new Student("xiaoqiang",31),"沈阳");
  11. hm.put(new Student("wangcai",28),"大连");
  12. hm.put(new Student("zhaoliu",24),"铁岭");
  13.  
  14. // Set<Student> keySet = hm.keySet();
  15. // Iterator<Student> it = keySet.iterator();
  16.  
  17. Iterator<Student> it = hm.keySet().iterator();
  18.  
  19. while(it.hasNext()){
  20. Student key = it.next();
  21. String value = hm.get(key);
  22. System.out.println(key.getName()+":"+key.getAge()+"---"+value);
  23. }
  24. }
  25. }

TreeMap:

  1. public class TreeMapDemo {
  2. public static void main(String[] args) {
  3.  
  4. TreeMap<Student,String> tm = new TreeMap<Student,String>(new ComparatorByName());
  5.  
  6. tm.put(new Student("lisi",38),"北京");
  7. tm.put(new Student("zhaoliu",24),"上海");
  8. tm.put(new Student("xiaoqiang",31),"沈阳");
  9. tm.put(new Student("wangcai",28),"大连");
  10. tm.put(new Student("zhaoliu",24),"铁岭");
  11.  
  12. Iterator<Map.Entry<Student, String>> it = tm.entrySet().iterator();
  13.  
  14. while(it.hasNext()){
  15. Map.Entry<Student,String> me = it.next();
  16. Student key = me.getKey();
  17. String value = me.getValue();
  18.  
  19. System.out.println(key.getName()+":"+key.getAge()+"---"+value);
  20. }
  21. }
  22. }

未完...

java学习——集合框架(泛型,Map)的更多相关文章

  1. 十七、Java基础---------集合框架之Map

    前两篇文章中介绍了Collection框架,今天来介绍一下Map集合,并用综合事例来演示. Map<K,V> Map<K,V>:Map存储的是键值对形式的元素,它的每一个元素, ...

  2. Java学习----集合框架总结

    集合框架总结: Collection接口: Set接口: HashSet//对象必须实现hashCode方法,元素没有顺序呢,效率比LinkedHashSet高 LinkedHashSet//是Has ...

  3. Java学习——集合框架【4】

    一.集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个层次. 实 ...

  4. java习题-集合框架-泛型

    集合框架 一 去除List集合中的重复元素. 思路: 1,先创建一个临时容器.用于存储唯一性的元素.2,遍历原容器,将遍历到的元素到临时容器中去判断,是否存在.3,如果存在,不存储到临时容器,如果不存 ...

  5. java学习——集合框架(Collection,List,Set)

    集合类的由来: 对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就使用集合容器进行存储. 集合特点:1,用于存储对象的容器.2,集合的长度是可变的.3,集合中不可以存储基本数据类型值. ...

  6. 【转】Java学习---集合框架那些事

    [原文]https://www.toutiao.com/i6593220692525711885/ Arraylist 与 LinkedList 异同 1. 是否保证线程安全: ArrayList 和 ...

  7. Java自学-集合框架 泛型Generic

    ArrayList上使用泛型 步骤 1 : 泛型 Generic 不指定泛型的容器,可以存放任何类型的元素 指定了泛型的容器,只能存放指定类型的元素以及其子类 package property; pu ...

  8. java的集合框架set 和map的深入理解

    Java的集合框架之Map的用法详解 Map有两种比较常用的实现:HashMap 和 TreeMap. HashMap: HashMap 也是无序的,也是按照哈希编码来排序的,允许使用null 值和n ...

  9. Java集合框架之Map接口浅析

    Java集合框架之Map接口浅析 一.Map接口综述: 1.1java.util.Map<k, v>简介 位于java.util包下的Map接口,是Java集合框架的重要成员,它是和Col ...

随机推荐

  1. java进程卡死问题

    原文地址:http://stackoverflow.com/questions/28739600/jvm-hang-and-kill-3-jmap-failed tomcat进程出现了如下异常,并且卡 ...

  2. MySql密码丢失

     windows下mysql密码忘记了 第一步:netstat -nat(可以查看mysql是否启动了,如果启动了,可以用输入net stop mysql(或者通过任务管理器结束进程)) 第二步:my ...

  3. 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 ...

  4. Sudoku(回溯)

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 12075   Accepted: 6026   Special Judge ...

  5. 动态规划(方案还原):SGU 104 Little shop of flowers

    花店橱窗布置问题 时间限制:3000 ms 问题描述(Problem)    假设你想以最美观的方式布置花店的橱窗,你有F束花,每束花的品种都不一样,同时,你至少有同样数量的花瓶,被按顺序摆成一行.花 ...

  6. 最小生成树问题(Kruskal 算法)(克鲁斯卡尔)

    如图就是Kuskal算法 将图中的每条边按照权值从小到大排序,每次加起来就行,注意的是不要形成回路: 重点是如何用代码实现不能形成回路 看代码; #include <cstdio> #in ...

  7. 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.现在对于某个数字三角形, 每行告诉你某 ...

  8. 最长回文 HDU 3068 (裸的Manacher)

    直接看代码: ============================================================================================= ...

  9. Python中http请求方法库汇总

    最近在使用python做接口测试,发现python中http请求方法有许多种,今天抽点时间把相关内容整理,分享给大家,具体内容如下所示: 一.python自带库----urllib2 python自带 ...

  10. WebService-通俗讲解

    一.序言 大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成 分.但是不得不承认的是W ...