Collections工具类、Map集合、HashMap、Hashtable(十八)
1.Map集合概述和特点
* A:Map接口概述
* 去重复,
* 查看API可以知道,
* 将键映射到值的对象,
* 一个映射不能包含重复的键,
* 每个键最多只能映射到一个值。
* B:Map接口和Collection接口的不同
* Map是双列的,Collection是单列的。
* Map的键唯一,Collection的子体系Set是唯一的,即不重复。
* Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效。
2.Map集合的功能概述
* a:添加功能
* V put(K key,V value):添加元素。
* 如果键是第一次存储,就直接存储元素,返回null
* 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
* b:删除功能
* void clear():移除所有的键值对元素
* V remove(Object key):根据键删除键值对元素,并把值返回
* c:判断功能
* boolean containsKey(Object key):判断集合是否包含指定的键
* boolean containsValue(Object value):判断集合是否包含指定的值
* boolean isEmpty():判断集合是否为空
* d:获取功能
* Set<Map.Entry<K,V>> entrySet():???
* Entry 是Map 接口中的内的接口,内接口,
* V ---- get(Object key):根据键获取值
* Set<K> -- keySet():获取集合中所有键的集合
* Collection<V> values():获取集合中所有值的集合
* e:长度功能
* int size():返回集合中的键值对的个数。
3.Map集合的遍历之键找值
* 键找值思路:
* 获取所有键的集合keySet()
* 遍历键的集合,获取到每一个键get()
* 根据键找值
Map集合的遍历之键找值
HashMap<String, Integer> hm = new HashMap<>();
hm.put("张三", 23);
hm.put("张三", 23);
hm.put("李四", 24);
hm.put("王五", 25);
hm.put("王五", 25);
hm.put("王五", 25);
hm.put("赵六", 26);
1.keySet(),get(),增强for循环
for (String key : hm.keySet()) {
Integer value = hm.get(key);
System.out.println(key+","+value);
}
4.Map集合的遍历之键值对对象找键和值
* :键值对对象找键和值思路:
* 获取所有键值对对象的集合
* 遍历键值对对象的集合,获取到每一个键值对对象
* 根据键值对对象找键和值
Map集合的遍历之键值对对象找键和值
2.entrySet(),Entry<>,getValue(),getKey(),增强for循环
for (Entry<String,Integer> entry : hm.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key+","+value);
}
HashMap集合键是Stirng值是String的案例
HashMap<String, String> hm = new HashMap<>();
hm.put("张三", "北京");
hm.put("李四", "大连");
hm.put("王五", "上海");
hm.put("赵六", "南京");
System.out.println(hm);
//{赵六=南京, 张三=北京, 李四=大连, 王五=上海}
}
TreeMap集合键是String值是String的案例
TreeMap<String, String> ts = new TreeMap<>();
ts.put("1", "北京");
ts.put("5", "南京");
ts.put("2", "天京");
ts.put("4", "东京");
ts.put("3", "西京");
ts.put("6", "中都");
System.out.println(ts);
//{1=北京, 2=天京, 3=西京, 4=东京, 5=南京, 6=中都}
TreeMap集合键是Student值是String的案例
TreeMap<Student, String> ts = new TreeMap<>(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
int num = s1.getName().compareTo(s2.getName());
return num ==0 ? s1.getAge() - s2.getAge() : num;
}
});
ts.put(new Student("张三",23), "北京");
ts.put(new Student("李四",24), "东京");
ts.put(new Student("李四",25), "东京");
ts.put(new Student("李四",24), "东京");
ts.put(new Student("王五",25), "南京");
ts.put(new Student("王五",25), "南京");
System.out.println(ts);
需求:统计字符串中每个字符出现的次数
String str = "aabbbccc";
char[] arr = str.toCharArray();//把字符串转换成字符数组
HashMap<Character , Integer> hm = new HashMap<>();//创建HashMap对象
for(char c : arr){//增强for循环
if(!hm.contaionsKey(c)){//若hm中没有值就添加,key 为单个字符,值 最初为1,以后每有相同的就加1。
hm.put(c,1);
}else{
hm.put(c,hm.get(c)+1);
}
}
集合嵌套之HashMap嵌套HashMap
HashMap<String, HashMap<Student, String>> hm = new HashMap<>();
HashMap<Student, String> hm1 = new HashMap<>();
hm1.put(new Student("张三",23) ,"北京" );
hm1.put(new Student("李四",24) ,"上海" );
hm1.put(new Student("张三",23) ,"南京" );
hm1.put(new Student("王五",25) ,"东京" );
hm1.put(new Student("王五",25) ,"西京" );
hm1.put(new Student("赵六",26) ,"中都" );
HashMap<Student, String> hm2 = new HashMap<>();
hm2.put(new Student("张3",23) ,"北京" );
hm2.put(new Student("李4",24) ,"上海" );
hm2.put(new Student("张3",23) ,"南京" );
hm2.put(new Student("王5",25) ,"东京" );
hm2.put(new Student("王5",25) ,"西京" );
hm2.put(new Student("赵6",26) ,"中都" );
hm.put("第一组人", hm1);
hm.put("第二组人", hm2);
for (String key : hm.keySet()) {
HashMap<Student, String> value = hm.get(key);
for (Student val : value.keySet()) {
System.out.println(key +","+ val +","+ value.get(val));
}
}
}
/*
第一组人,Student [name=张三, age=23],南京
第一组人,Student [name=李四, age=24],上海
第一组人,Student [name=王五, age=25],西京
第一组人,Student [name=赵六, age=26],中都
第二组人,Student [name=张3, age=23],南京
第二组人,Student [name=王5, age=25],西京
第二组人,Student [name=赵6, age=26],中都
第二组人,Student [name=李4, age=24],上海
*/
5.HashMap和Hashtable的区别
* HashMap和Hashtable的区别
* 底层都是hash表实现的,
* HashMap: JDK2.0、不同步(线程不安全的),效率高、能存储null值和null键
* Hashtable:JDK1.0、同步的(线程安全的),效率低、不能存储null值和null键
* Vector--JDK1.0
6.Collections工具类的概述和常见方法讲解
* A:Collections类概述
* collection ----集合层次的根接口
* collections----操作集合的工具类
* 针对集合操作 的工具类
* B:Collections成员方法
public static <T> void sort(List<T> list)//排序
public static <T> int binarySearch(List<?> list,T key)//二分查找
public static <T> T max(Collection<?> coll)//最大值
public static void reverse(List<?> list)//反转
public static void shuffle(List<?> list)无序
7.泛型固定下边界
* ? super E ---- E 是子类
* ? extends E ---- E是父类
Collections工具类、Map集合、HashMap、Hashtable(十八)的更多相关文章
- Set集合[HashSet,TreeSet,LinkedHashSet],Map集合[HashMap,HashTable,TreeMap]
------------ Set ------------------- 有序: 根据添加元素顺序判定, 如果输出的结果和添加元素顺序是一样 无序: 根据添加元素顺序判定,如果输出的结果和添加元素的顺 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_07 Collections工具类_1_Collections集合工具类的方法
这是一个个的添加的方式 参数是个可变的元素.可以传递任意多的元素 shuffle打乱集合元素顺序
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_07 Collections工具类_2_Collections集合工具类的方法
默认规则一般都是升序排序 再来创建一个字符串的数组 排序后,按照升序输出结果 自定义类型排序 创建一个Person类,getter和setter 有参构造和无参构造 重写toString的方法 传对象 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_07 Collections工具类_3_Collections集合工具类的方法
第二个参数传递了一个匿名内部类.结果就出现了下面的代码 源码里面有Compare方法,对比两个参数 要重写比较的方法 对对象进行排序 创建学生类.对学生类进行排序 重写Person的ToString方 ...
- Map集合、HashMap集合、LinkedHashMap集合、Hashtable集合、Collections工具类和模拟斗地主洗牌和发牌
1.Map集合概述和特点 * A:Map接口概述 * 查看API可以知道: * 将键映射到值的对象 * 一个映射不能包含重复的键 * 每个键最多 ...
- LinkedHashSet、Map、Map接口HashMap、Hashtable,TreeSet、TreeMap、如何选择使用集合实现类,Collections工具类
一.Set接口实现类LinkedHashSet 实现继承图: 1.LinkedHashSet的全面说明 1) LinkedHashSet是 HashSet的子类 2) LinkedHashSet底层是 ...
- (Set, Map, Collections工具类)JAVA集合框架二
Java集合框架部分细节总结二 Set 实现类:HashSet,TreeSet HashSet 基于HashCode计算元素存放位置,当计算得出哈希码相同时,会调用equals判断是否相同,相同则拒绝 ...
- day07(Set接口,HashSet类,hashcoad(),Collections工具类,Map集合)
Set接口 set接口的实现类特点 1.无序(取出来的顺序和存进去的数据的顺序不一致) 2.唯一(数据不能存相同的) 底层是用Map集合写的 HashSet类 实现了 set接口 唯一 ...
- Java从入门到放弃18---Map集合/HashMap/LinkedHashMap/TreeMap/集合嵌套/Collections工具类常用方法
Java从入门到放弃18—Map集合/HashMap/LinkedHashMap/TreeMap/集合嵌套/Collections工具类常用方法01 Map集合Map集合处理键值映射关系的数据为了方便 ...
随机推荐
- EMD距离
一.场景介绍 最近在研究一个场景:图片质量评分,给一张图片一个预测的分数. 里面提到了用 EMD(Earth Mover’s Distance)算法来评估两张图片之间的分布距离.下面主要讲解下 ...
- WAMP本地环境升级php版本--第二次尝试
wamp 环境下 php5.6.25 升级php7.1.17 实践 本文参考:https://www.cnblogs.com/hubaohua1588/p/6884146.html来进行操作. 1.从 ...
- Oracle的memory_max_target和memory_target修改和ORA-00845: MEMORY_TARGET not supported on this system错误解决
https://blog.csdn.net/sunny05296/article/details/56495599
- Codeforces Gym 100286I iSharp 模拟
原题地址:http://codeforces.com/gym/100286/attachments/download/2013/20082009-acmicpc-northeastern-europe ...
- 关于get请求的乱码问题
1.使用getBytes() 页面跳转时,参数中含有中文,特殊符号,tomcat的默认编码为ios-8859-1,后台接受中文编码时,使用如下转码 //获取参数 String bname = requ ...
- 推荐几款屏幕录制工具(可录制GIF)
我们经常会遇到一些场景,需要你向别人展示一些操作或是效果——例如告诉别人某某软件的配置步骤啊.刚设计出来网站的动画效果怎么样啊.某某电影里面的一个镜头多么经典啊.打得大快人心的NBA绝杀瞬间是怎么回事 ...
- 前端微服务-面向web平台级应用的设计
从去年开始,前端领域就出现了一个‘微应用’的名词,说的是前端架构的一种设计思路,业内都把它和后端的微服务进行类比,当时忙于公司的项目.没有静下心来好好了解,现在项目结束,再加上最近看的几篇关于前端微服 ...
- MAPZONE GIS SDK接入Openlayers3之五——图形编辑工具
图形编辑工具提供对要素图形进行增.删.改的功能,具体包括以下几种工具类型: 浏览工具 选择工具 创建要素工具 删除命令 分割工具 合并命令 节点编辑工具 修边工具 撤销命令 重做命令 工具的实现基本上 ...
- mac mysql重置密码
http://blog.csdn.net/xiaozhuanddapang/article/details/53185775 情况一:在mysql官网直接下载dmg文件进行安装,忘记密码 1.关闭my ...
- Dubbo和Spring集成Demo
Zookeeper安装和启动 http://mirrors.hust.edu.cn/apache/zookeeper/下载,我的版本是 3.4.5. 解压到 D:\zookeeper-3.4.5 配置 ...