------- android培训、java培训、期待与您交流! ----------
1602 集合----Map子类对象特点
/*
Map集合:该集合存储键值对时,一对对往里存,而且要保持键的唯一性
1。添加
put(K key,V value)
putAll(Map<? extends K,? extends V>m)
2。删除
clear()
remove(Object key)
3,判断
containKey(Object key)
containValue(Object value)
isEmpty()
4。获取
get(Object key)
size()
values()
entrySet()
keySet()
Map实现类
--HashMap:底层是哈希表数据结构,可以存入null值null键,该集合是不同步的Jdk1.2 效率高
--HashTable:底层是哈希表数据结构,不可以存入null值null键,该集合是线程同步的Jdk1.0 效率低
--TreeMap:底层是二叉树数据结构,线程不同步,可以用于给Map集合中的键进行排序
和Set很像
其实,Set底层就是使用了Map集合
*/
import java.util.*; class MapDemo { public static void main(String[] args) { Map<String,String> map = new HashMap<String,String>();//为什么Map无法直接实例化?? //添加元素,如果出现添加时相同的键,那么后添加的值会覆盖原有的键对应的值,先返回null,后返回被覆盖的键值 map.put("01","zhangsan1"); map.put("02","zhangsan2"); map.put("03","zhangsan3"); System.out.println("containKey:"+map.containsKey("02")); //System.out.println("remove:"+map.remove("02"));//删除键后,返回键值 System.out.println("get:"+map.get("02")); //可以通过get方法的返回值,判断一个键是否存在 //获取map集合中所有的值 Collection<String> coll = map.values(); System.out.println(coll);//返回map集合中所有的键值 System.out.println(map); } }
1604 集合 Map KeySet
/*
map集合的两种取出方式:
1。Set<k> keySet:将map中所有的键存入到Set集合,因为Set具备迭代器
所以可以迭代方式取出所有的键,再给句get方法,获取每一个键对应的键值
Map集合的取出原理:将Map集合转成Set集合,再通过迭代器取出
2。Set<Map.Entry<K,V>> entrySet()
将Map集合中的映射关系存入到Set集合中,映射关系的数据结构就是Map.Entry<k,v>
*/
import java.util.*; class MapDemo2 { public static void main(String[] args) { Map<String,String> map = new HashMap<String,String>(); map.put("01","zhangsan1"); map.put("02","zhangsan2"); map.put("03","zhangsan3"); map.put("04","zhangsan4"); //先获取map集合的所有键的Set集合,keySet() Set<String> keySet = map.keySet(); //有了Set集合,就可以获取其迭代器 Iterator<String> it = keySet.iterator(); while (it.hasNext()) { String key = it.next(); //有了键可以通过map集合的get方法获取其对应的值 String value = map.get(key); System.out.println("key:"+key+"--value:"+value); } Set<Map.Entry<String,String>> entrySet = map.entrySet(); Iterator<Map.Entry<String,String>> it1 = entrySet.iterator(); while (it1.hasNext()) { Map.Entry<String,String> me = it1.next(); String key = me.getKey(); String value = me.getValue(); System.out.println(key+":"+value); } } } /* Map.Entry<k,v> 其实Entry也是一个接口,它是Map接口中的一个内部接口 */ interface Map { public static interface Entry { public abstract Object getKey(); public abstract Object getValue(); } } class HashMap implements Map.Entry { public Object getKey() {} public Object getValue() {} }
1606 MapTest Map练习
/*
需求:
每一个学生都有对应的属性;
学生Student,地址String。
学生属性:姓名,年龄
注意:姓名和年龄相同的视为同一个学生
保证学生的唯一性
思路:
1。描述学生
2。定义Map容器,将学生作为键,地址作为键值存入
3。获取map集合中的元素
*
/ import java.util.*; class Student implements Comparable<Student> { private String name; private int age; Student(String name, int age) { this.name = name; this.age = age; } public int compareTo(Student s) { int num = new Integer(this.age).compareTo(new Integer(s.age)); if(num==0) return this.name.compareTo(s.name); return num; } public int hashCode() { return name.hashCode()+age*34; } public boolean equals(Object obj) { if (!(obj instanceof Student)) return false;//throw new classCastException--抛出异常更为合理 Student s = (Student)obj; return this.name.equals(s.name) && this.age == s.age; } public void setName(String n) { name = n; } public void setAge(int a) { age = a; } public String getName() { return name; } public int getAge() { return age; } public String toString() { return name+":"+age; } } class MapTest { public static void main(String[] args) { Map<Student,String> hm = new HashMap<Student,String>(); hm.put(new Student("zhangsan01",20),"beijing"); hm.put(new Student("zhangsan01",20),"tianjin"); hm.put(new Student("zhangsan02",20),"shanghai"); hm.put(new Student("zhangsan03",20),"nanijng"); hm.put(new Student("zhangsan04",20),"wuhan"); //第一种取出方式entrySet Set<Map.Entry<Student,String>> entrySet = hm.entrySet(); Iterator<Map.Entry<Student,String>> it = entrySet.iterator(); while (it.hasNext()) { Map.Entry<Student,String> me = it.next(); Student stu = me.getKey(); String addar = me.getValue(); System.out.println(stu+":"+addar); } //第二种取出方式keySet Iterator<Student> it1 = hm.keySet().iterator(); while (it1.hasNext()) { Student stu = it1.next(); String value = hm.get(stu); System.out.println(stu+":"+value); } } }
1607 集合 TreeMap练习
/*
需求:对学生对象的年龄进行升序排序
因为数据是以键值形式存在的
所以要使用可以排序的Map集合,TreeMap
*
/ import java.util.*; class MapTest2 { public static void main(String[] args) { Map<Student,String> hm = new TreeMap<Student,String>(new StuNameComparator()); //多了比较器,就以比较器为主,排序. hm.put(new Student("zhangsan04",25),"beijing"); hm.put(new Student("zhangsan01",20),"tianjin"); hm.put(new Student("zhangsan02",23),"shanghai"); hm.put(new Student("zhangsan03",22),"nanijng"); hm.put(new Student("zhangsan01",20),"wuhan"); Set<Map.Entry<Student,String>> entrySet = hm.entrySet(); Iterator<Map.Entry<Student,String>> it = entrySet.iterator(); while (it.hasNext()) { Map.Entry<Student,String> me = it.next(); Student stu = me.getKey(); String addar = me.getValue(); System.out.println(stu+":"+addar); } } } class StuNameComparator implements Comparator<Student>//参与比较对象 { public int compare(Student s1,Student s2) { int num = s1.getName().compareTo(s2.getName()); if(num==0) return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())); return num; } }
相关推荐
day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda...Java基础小节练习题答案
集合—黑马程序员Java学习笔记
Java集合例题、例题源码、PPT教学文档(黑马程序员详细版)
含面向对象,异常处理和常用类,线程技术,集合框架,IO操作,网络编程,文件操作,反射机制,
黑马程序员java培训就业班笔记:day16(集合框架基础总结)
。。。
观看黑马程序员Java零基础视频教学,从60P方法开始总结的知识集合,请使用Xmind打开,如果需要学习请配合视频打开:https://www.bilibili.com/video/BV17F411T7Ao
java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc ...黑马程序员入学Java精华总结.pdf
java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB“ 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc ...黑马程序员入学Java精华总结.pdf
Javaweb程序设计任务教程课后习题及答案 黑马程序员【传智播客】 集合整理不易,如果文档有错误请见谅,此次整理只有1、2、3、4、5、6、8、9
WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。2005年8月,在第11届ACM SIGKDD国际会议上...
集合: 70 — 80 题 15 — 18 页 线程: 81 — 90 题 18 — 21 页 IO & Socket: 91 — 95 题 21 — 24 页 二、OOAD & UML: 96 — 101 题 24 — 25 页 三、XML: 102 — 105 题 26 — 29 页 四、SQL: 106 — 109 ...
Ⅲ.Collection集合和Map集合的设计和API使用,以及集合的嵌套 Ⅳ.lambda表达式遍历集合,以及比较器comparator()匿名内部类的使用 V.使用Stream流操纵集合 功能: ①日志框架搭建、系统角色设计 ②首页、登录、商家...
java面试笔试题库java学习比较开发教程互联网公司面试资料大全合集: 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc ...黑马程序员入学Java精华总结.pdf
给大家分享一篇我在学习java过程中...包含常见的面试题:JVM、Java集合、多线程并发、java基础、SSM框架原理、微服务、Netty和RPC、网络、日志、算法、数据结构、加密、分布式算法、机器学习、大数据等知识点,都是干货
逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何...
在本套课程中,将会非常深入、非常详细、非常全面的解读HashMap以及...从底层的数据结构到底层源码分析以及怎样使用提高HashMap集合的效率问题等进行分析。如果掌握本套课程,那么再看其他javase的源码时会觉得很简单。
@学习路线根据黑马程序员学习路线改编 Part1: Java基础&Web基础 Java基础 面向对象思想 集合框架 IO流 多线程与并发 异常处理 网络编程 数据库 MySQL Oracle JDBC C3P0 Druid 前端技术 HTML CSS JavaScript jQuery ...
Java基础笔记分为 Java基础篇 和 Java加强篇 Java基础篇包括: 1. Java环境搭建、Java快速入门、IDEA开发工具 2. Java基础语法、类型转换、运算符、Scanner 3. 分支结构、循环结构、随机数 4. 数组详解、Debug工具...
黑马程序员,b站当之无愧的白嫖课程之王 马士兵老师,马老师的课什么都好就是对我来说太贵难度太大,我有时会蹭直播公开课,蹭书。感兴趣可以支持一下(腾讯课堂) 简要介绍 DesignPatterns 设计模式代码库 ...