黑马程序员———集合框架之Map接口
来源:互联网 发布:cchar数组初始化 编辑:程序博客网 时间:2024/04/29 18:45
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流------
一.Map集合的共性方法
1.1向Map集合中添加键值对的原理
a.我们知道List集合中可以添加重复的元素,调用add()方法添加成功返回true,而Set集合中不可以添加重复的元素,调用add()方法添加成功返回true,添加重复元素时添加失败返回false。实例代码如下:
public class Demo01 {public static void main(String[] args) {ArrayList<Student> al=new ArrayList<Student>();System.out.println(al.add(new Student("zhangsan",20)));//添加成功,输出trueSystem.out.println(al.add(new Student("zhangsan",20)));//添加成功,输出trueHashSet<Student> hs=new HashSet<Student>();System.out.println(hs.add(new Student("zhangsan",20)));//添加成功,输出trueSystem.out.println(hs.add(new Student("zhangsan",20)));//添加失败,输出false}}
b.Map集合通过put()方法向集合中添加键值对,返回的是与当前添加的键值对的key相同的之前添加的键值对的value值,并且当前添加的键值对会覆盖之前添加的键值对;若之前并没有添加具有相同key的键值对,则返回null。示例代码如下:
public class Demo01 {public static void main(String[] args) {Map<String,Student> m=new HashMap<String,Student>();System.out.println(m.put("01",new Student("zhangsan",20)));//添加成功,输出nullSystem.out.println(m.put("01",new Student("lisi",21)));//添加成功并覆盖之前添加的key为"01"的键值对,输出Student [name=zhangsan, age=20]}}
1.2List集合对元素的排序是按照添加的位置进行排序,add(element)表示将元素添加到集合末尾,add(int index,element)表示把元素添加到指定的位置;而Set集合对元素的排序则不是按照添加的顺序,HashSet集合是按照元素的哈希值对元素进行排序,TreeSet集合是按照集合的比较器(或元素的比较性)对元素进行排序的,相似地,Map集合中的HashMap集合对键值对的排序是按照键值对的key的哈希值,Map集合中的TreeMap集合对键值对的排序是按照键值对的key的比较性进行排序的。示例代码如下:
public class Demo01 {public static void main(String[] args) {HashMap<String,Student> m=new HashMap<String,Student>();System.out.println(m.put("abc",new Student("zhangsan",20)));//添加成功,输出nullSystem.out.println(m.put("bbd",new Student("lisi",21)));//添加成功并覆盖之前添加的key为"01"的键值对,输出Student [name=zhangsan, age=20]System.out.println(m.put("cba",new Student("zhangsan",20)));//输出{abc=Student [name=zhangsan, age=20], cba=Student [name=zhangsan, age=20], bbd=Student [name=lisi, age=21]}System.out.println(m);}}
public class Demo01 {public static void main(String[] args) {TreeMap<String,Student> m=new TreeMap<String,Student>();System.out.println(m.put("abc",new Student("zhangsan",20)));//添加成功,输出nullSystem.out.println(m.put("bbd",new Student("lisi",21)));//添加成功并覆盖之前添加的key为"01"的键值对,输出Student [name=zhangsan, age=20]System.out.println(m.put("cba",new Student("zhangsan",20)));//输出{abc=Student [name=zhangsan, age=20], bbd=Student [name=lisi, age=21], cba=Student [name=zhangsan, age=20]}System.out.println(m);}}1.3使用迭代器取出集合中所有键值对的key,value,由于Map集合中没有迭代器,所以可以把集合中的所有键值对或key取出放到另一个Set集合中,调用该Set集合的迭代器即可,示例代码如下:
public class MapDemo {public static void main(String[] args) {Map<String, String> m=new HashMap<String, String>();System.out.println(m.put("01", "zhangsan"));//输出null,因为之前没有添加key为01的键值对System.out.println(m.put("01", "zhaoliu"));//输出zhangsan,put()方法返回的是与当前添加的键值对的key相同的之前添加的键值对的value值m.put("02", "lisi");m.put("03", "wangwu");m.put("04", "wangwu");System.out.println(m.get("01"));//根据key获取对应的value,输出zhaoliuSystem.out.println(m.remove("01"));//根据key删除对应的value,返回删除的value,输出zhaoliuSystem.out.println(m.get("01"));//输出null,因为已经删除其valueSystem.out.println(m.containsKey("01"));//输出false,因为已经删除其valueSystem.out.println(m.containsValue("wangwu"));//输出trueSystem.out.println(m);//输出{04=wangwu, 02=lisi, 03=wangwu}//也可以使用迭代器依次取出集合中每个键值对的key,value,由于Map集合中没有迭代器,//所以可以把集合中的所有键值对或key取出放到另一个Set集合中,调用该Set集合的迭代器即可Set<String> s=m.keySet();Iterator<String> it=s.iterator();while(it.hasNext()){String key=it.next();String value=m.get(key);System.out.println(key+"="+value);}Set<Map.Entry<String, String>> s1=m.entrySet();Iterator<Map.Entry<String, String>> it1=s1.iterator();while(it1.hasNext()){Map.Entry<String, String> me=it1.next();String key1=me.getKey();String value1=me.getValue();System.out.println(key1+"="+value1);}}}
1.3当Map集合中key与value是一对多的对应关系,例如一个班级名称对应多个学生对象,此时可以把value设置为一个List集合容器,示例代码如下:
public class MapDemo {public static void main(String[] args) {Map<String, List<Student>> m=new TreeMap<String, List<Student>>();List<Student> list=new ArrayList<Student>();list.add(new Student("zhangsan",20));list.add(new Student("lisi",21));list.add(new Student("wangwu",22));list.add(new Student("zhaoliu",23));m.put("java1505", list);Set<String> s=m.keySet();Iterator<String> it=s.iterator();while(it.hasNext()){String key=it.next();System.out.println(key);List<Student> list1=m.get(key);Iterator<Student> it1=list1.iterator();while(it1.hasNext()){System.out.println(it1.next());}}}}
0 0
- 黑马程序员———集合框架之Map接口
- 黑马程序员——集合框架之Map
- 黑马程序员——集合框架接口的分类:(分collection接口 和 map接口)
- 黑马程序员——集合框架Map
- 黑马程序员———集合框架之Collection接口
- 黑马程序员——集合框架(双列集合:Map接口)
- 黑马程序员——集合框架-Map、集合工具类
- 黑马程序员——集合框架4:Map集合
- 黑马程序员—集合框架Collection接口与List接口
- 黑马程序员—Map集合
- 黑马程序员—Map集合
- 黑马程序员——【Java】集合框架——Map
- 黑马程序员——Java集合框架—Map
- 黑马程序员——>第十六天<集合框架(Map)>
- 黑马程序员_java集合框架——Map
- 黑马程序员——API集合框架-Set、Map
- 黑马程序员——集合框架(Map详解)
- 黑马程序员——集合框架(Map)
- javascript模拟map
- C++ windows服务为教室服务(spc.cpp)
- eclipse+ADT 进行android应用签名打包详解
- PHP中静态与非静态的那些事儿
- 图文布局列表 文字垂直居中
- 黑马程序员———集合框架之Map接口
- 再回首,还剩下什么?
- 二叉树的非递归遍历
- 一款非常漂亮的bootstrap表单checkbox/radio样式推荐
- javascript利用对象键值对中键的唯一性实现数组去重
- 苹果原生推送服务
- ajax实例 ajax技术分析
- 在一个Android application 调用另一个 application 里的 Activity 和 Service
- 已知后序和中序,计算先序的(c/c++)方法实现