- 浏览: 1588588 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
Map 集合的使用
Map 集合的两种取出方式
Map练习
/** * Map集合: 该集合存储键值对,一对一对往里存,而且要保证键的唯一性 * 1.添加 * put(K key,V value) * void putAll(Map<? extends K,? extends V> m) * 2.删除 * clear() * remove() * 3.判断 * containsKey(Object Key) * containsValue(Object value) * isEmpty() * * 4.获取 * get(Object key) * size() * values() * Set<Map.Entry<K,V>> entrySet() * Set<K> keySet() * * Map * |--HashTable: 底层是哈希表数据结构,不可以存入null键 和 null值,该集合是线程同步JDK 1.0. 无序 * |--HashMap:底层是哈希表数据结构,并允许使用null键null值,该集合不同步.JDK 1.2 效率高,无序 * |--TreeMap:底层是二叉树数据结构,线程不同步,可以用于给Map集合中的键排序. * * 和 Set 很像 * 其实,Set底层就是使用Map集合. * */ public class MapDemo { public static void main(String[] args) { Map<String,String> map=new HashMap<String,String>(); //添加元素,如果出现添加元素时,相同的键,那么后添加的值会覆盖原来键的对应值,并会返回被覆盖的值. map.put("01", "zhangsan1"); map.put("02", "zhangsan2"); System.out.println("put:"+map.put("03", "zhangsan3")); //put 会返回 这个键对应的原来的值 System.out.println("put:"+map.put("03", "zhangsan4")); System.out.println("containsKey:"+map.containsKey("022")); System.out.println("remove:"+map.remove("002"));//不存在的可以 就返回 null System.out.println("remove:"+map.remove("02")); //存在的 删除 并返回 要删除的对象 System.out.println(map); System.out.println("get:"+map.get("03")); //可以通过get方法的返回值来判断键是否存在 map.put(null, "hah"); //HashMap可以使用 null键 null值 所以下面的能够取到值 HashTable就不行 System.out.println("nullKey:"+map.get(null)); map.put("04",null); System.out.println("nullValue:"+map.get("04")); //获取Map集合中所有的值 Collection<String> values=map.values(); System.out.println(values); //获取Map集合的Key的所有值 Set<String> keys=map.keySet(); System.out.println(keys); } }
Map 集合的两种取出方式
/** *Map 集合的两种取出方式 * 1.Set<key> keySet: 将Map中的所有键存入的到Set集合中,因为Set具有迭代,所以可以用迭代方式取出所有的键 * 然后根据get方式,获取每个键对应的值 * * Map集合的取出原理: 将Map集合 转成 Set集合 再通过迭代器 * * 2.Set<Map.Entry<K,V>> entrySet: 将Map集合中的映射关系,存入Set集合中, * 而这个关系的数据类型就是Map.entry * * Map.Entry<K,V>:其实Entry也是一个接口,他是Map接口中的一个内部接口 * * interface Map<K,V>{ * public static interface Entry<K,V>{ * public abstract K getKey(); * public abstract V getValue(); * } * * } * */ /*interface Map<K,V>{ public static interface Entry<K,V>{ public abstract K getKey(); public abstract V getValue(); } }*/ public class MapDemo2 { public static void main(String[] args) { Map<String,String> map=new HashMap<String,String>(); map.put("01", "zhangsan1"); map.put("02", "zhangsan2"); System.out.println("put:"+map.put("03", "zhangsan3")); //put 会返回 这个键被覆盖的值 System.out.println("put:"+map.put("03", "zhangsan4")); //1.使用 keySet //先获取Map集合的所有键的Set集合,KeySet(); Set<String> keySet=map.keySet(); //有了Set集合就可以获取其迭代器 Iterator<String> it=keySet.iterator(); while(it.hasNext()){ String key=it.next(); String value=map.get(key); System.out.println("Key:"+key+",value:"+value); } System.out.println("=========================="); //2.entrySet 将map集合中的隐射关系取出,存入到Set集合这个 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(); System.out.println("Key:"+me.getKey()+",value:"+me.getValue()); } } }
Map练习
/** Map练习 * 每一个学生都有对应的归属地 * 学生Student,地址 String * 学生属性 姓名 年龄 * 注意:姓名和年龄相同视为同一个学习 * 保证学生的唯一性. * * 1.描述学习 * 2.定义Map容器,将学生作为键,地址作为值,存入 * 3.获取Map集合中的元素. * */ class Student implements Comparable<Student>{ private String name; private int age; Student(String name,int age){ this.name=name; this.age=age; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString() { return name+":"+age; } @Override public int hashCode() { // TODO Auto-generated method stub return name.hashCode()+age*2; } @Override public boolean equals(Object obj) { if(!(obj instanceof Student)) throw new ClassCastException("类型不匹配"); Student s=(Student)obj; return this.name.equals(s.name) && this.age==s.age; } @Override public int compareTo(Student o) { int num=new Integer(this.age).compareTo(new Integer(o.age)); if(num==0) return this.name.compareTo(o.name); return num; } } class StuNameComparator implements Comparator<Student>{ @Override public int compare(Student o1, Student o2) { int num=o1.getName().compareTo(o2.getName()); if(num==0) return new Integer(o1.getAge()).compareTo(o2.getAge()); return num; } } public class MapDemo3 { public static void main(String[] args) { method(); System.out.println("===================="); method1(); } //需求变了 需要保存进去的学生信息按 年龄排序 public static void method1(){ TreeMap<Student,String> tm=new TreeMap<Student,String>(new StuNameComparator()); tm.put(new Student("lisi01",21), "北京"); tm.put(new Student("lisi01",21), "天津"); tm.put(new Student("alisi02",22), "上海"); tm.put(new Student("elisi03",23), "武汉"); tm.put(new Student("clisi04",24), "南京"); Set<Map.Entry<Student, String>> entrySet=tm.entrySet(); Iterator<Map.Entry<Student, String>> it1=entrySet.iterator(); while(it1.hasNext()){ Map.Entry<Student, String> me=it1.next(); System.out.println(me.getKey()+"......"+me.getValue()); } } public static void method(){ HashMap<Student,String> hm=new HashMap<Student,String>(); hm.put(new Student("lisi01",21), "北京"); hm.put(new Student("lisi01",21), "天津"); hm.put(new Student("lisi02",22), "上海"); hm.put(new Student("lisi03",23), "武汉"); hm.put(new Student("lisi04",24), "南京"); //第一种取出方式 keySet Set<Student> keySet=hm.keySet(); Iterator<Student> it=keySet.iterator(); while(it.hasNext()){ Student stu=it.next(); String addr=hm.get(stu); System.out.println(stu+"......"+addr); } System.out.println("========================"); //第二种取出方式 Set<Map.Entry<Student, String>> entrySet=hm.entrySet(); Iterator<Map.Entry<Student, String>> it1=entrySet.iterator(); while(it1.hasNext()){ Map.Entry<Student, String> me=it1.next(); System.out.println(me.getKey()+"......"+me.getValue()); } } }
发表评论
-
检测一个字符串是否在jvm的常量池中
2018-12-18 17:34 993public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2279经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5648package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 979import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1053/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 1004//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1822更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1414import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 812import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2395import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 921// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1170import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 799import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1143import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3888import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 963/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 1019import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1837Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 1000/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2228package out; import ja ...
相关推荐
15 第15天Map集合.docx 16 第16天IO流.docx 17 第17天字节流.docx 18 线程.docx 19 网络编程.docx 2 拓薪教育-java基础语法.docx 3 J2SE程序的流程控制.docx 5 第5天面向对象.docx 6 static静态关键字和单例模式....
这是一份专为Java初学者准备的学习资源,由魔乐科技提供,旨在帮助用户在18天内建立起坚实的Java编程基础。Typora是一款简洁而高效的Markdown编辑器,使得笔记整理和阅读更加便捷。通过这份笔记,学习者将逐步了解并...
7. **集合框架**:Java集合框架包括接口(如List、Set、Map)和实现类(如ArrayList、LinkedList、HashSet、HashMap等),是存储和管理对象的重要工具。 8. **输入/输出流**:Java的I/O流用于处理数据的输入和输出...
这期间,学员将通过每一天的学习和编码实践,掌握从第16天到第25天的Java高级特性,如并发编程、集合框架的深入使用、IO流、网络编程、异常处理、设计模式等关键知识点。 【标签】"java-毕向东" 显示了课程的专业...
《21天学通Java》是为初学者设计的一本教程,旨在帮助读者在短时间内掌握Java编程基础。这本书的第7版更新了最新的Java技术,包括Java 8及更高版本的关键特性,使得学习内容与时俱进,更适合当前的开发环境。通过21...
8. **集合框架**:Java集合框架包括List、Set、Queue和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类,它们提供了数据组织和操作的多种方式。 9. **多线程**:Java内置了对多线程的支持,学习者...
### 达内Java课程——Java核心编程10天知识点详解 #### 散列表Map - **概念**: 散列表是一种非常高效的数据结构,它通过特定的哈希函数将键值映射到表的一个位置来访问记录,这使得查找操作能在平均时间复杂度为O(1...
"18天Java学习之经典笔记"是一份专为快速掌握Java基础知识而设计的学习资料,适用于那些希望在短时间内复习、备考或者准备面试的人员。这份笔记涵盖了Java的核心概念,通过18天的学习计划,帮助读者逐步理解并熟练...
Java支持多线程编程,第15天至第16天的学习内容可能涵盖线程的创建、同步机制(如synchronized关键字、wait()、notify()等)、线程池的使用,这些都是并发编程的关键。 七、反射与注解 第17天可能涉及Java的反射...
《21天学通Java》是一本专门为初学者设计的Java编程教材,旨在帮助读者在21天的学习周期内快速掌握Java编程基础。这不仅涵盖了Java语言的核心概念,还注重实践,让学习者通过实际操作加深理解。在这个过程中,读者将...
12. **集合框架**:Java集合框架包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。理解它们的特性和使用场景。 13. **输入/输出流**:学习如何使用InputStream、...
10. **集合框架**:Java集合框架包括List、Set和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。理解它们的区别和应用场景,以及泛型的使用。 11. **多线程**:Java提供了Thread类和Runnable接口...
在Java集合框架中,如果要对对象进行排序,需要实现Comparable接口或者在构造时提供一个Comparator比较器。 14. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要正确处理汉字...
10. **Day17 - 集合框架**: 了解Java集合框架,包括List, Set, Queue接口及其实现类,如ArrayList, LinkedList, HashSet, TreeSet, Stack等,以及Map接口和HashMap, TreeMap等。 11. **Day18 - 多线程**: 掌握Java...
第一篇 基础篇 第1章 Java简介(精彩视频:33分钟) 21 1.1 Java的平台简介 21 1.2 安装工具包 22 1.2.1 下载JDK 22 1.2.2 安装JDK 24 1.2.3 查看与设置环境变量 25 1.2.4 JDK常用命令 27 1.2.5 Java各个目录含义 28...
15. **Java集合框架**:深入学习List、Set、Map接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等,以及它们的适用场景。 16. **Java IO/NIO**:了解传统的IO模型和非阻塞IO模型(NIO),以及Java 7...
28. **获取当月最后一天**:使用`Calendar`或`LocalDate`类。 29. **格式化日期**:使用`SimpleDateFormat`或`DateTimeFormatter`类。 30. **编码转换**:使用`new String(byteArray, charsetName)`方法。 31. **...