Java集合Map与其子类回顾
接10月12号昨天的笔记,今天继续回顾集合中的Map集合。
一、集合工具操作类Collections
问题:collection和collections的区别?
1、collection是单列集合的顶层接口,它有List和Set子接口
2、collections是集合的一个操作类,里面包含的都是一些集合操作的静态方法
Collections的方法概述
1、排序
public static <T> void sort(List<T> list):排序 默认情况下是自然顺序。 ArrayList <Integer> list = new ArrayList<Integer>();
list.add(10);
list.add(50);
list.add(5);
Collections.sort(list);
sort可以针对基本数据类型进行排序,也可以针对引用类型进行排序。只是传入参数不同。
注意:如果该类同时实现了自然排序和比较器排序,那么优先使用比较器排序。
下面是一个学生类用比较器(匿名内部类)的方法实现的排序。
public static <T> void sort(List<T> list, Comparator<? super T> c)
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
int num = s2.getAge() - s1.getAge();
int num2 = num == 0 ? s1.getName().compareTo(s2.getName()): num;
return num2;
}
});
2、二分查找
public static <T> int binarySearch(List<?> list,T key) 返回值:当查找的键在列表中,返回键在集合中索引;否则返回(-(插入索引)-1)。
注意:使用二分查找时,需要对集合进行排序(sort(list)),否则无法确定查找键的位置。
3、最大值
public static <T> T max(Collection<?> coll)
4、反转
public static void reverse(List<?> list)
5、随机置换
public static void shuffle(List<?> list)
二、Map集合
相对于Collection的区别:它可以存储键值对元素,而Collection只能存储单个元素。
Map的特点:键唯一,值可重复,一个键映射一个值;Map中的数据结构只针对键有效。
Map集合功能概述:
1、添加功能
V put(K key,V value)
注意:如果是第一次存储,直接存储,返回null;如果键不是第一次存在,就将值替换,返回之前的值。
Map<String,String> map = new hashMap<String,String>();
map.put("baidu","B");
map.put("alibaba","A");
map.put("tencen","t");
2、删除功能
void clear():移除所有的键值对元素
V remove(Object key):根据键删除键值对元素,并把值返回
3、判断功能
boolean containsKey(Object key):判断集合是否包含指定的键
boolean containsValue(Object value):判断集合是否包含指定的值
boolean isEmpty():判断集合是否为空
4、获取功能
Set<Map.Entry<K,V>> entrySet():获取键值对集合
V get(Object key):根据键获取值
Set<K> keySet():获取集合中所有键的集合
Collection<V> values():获取集合中所有值的集合
通过键获取到值
HashMap<String,String> hm = new HashMap<String,String>()
hm.put("baidu","B");
hm.put("tencen","t");
hm.put("alibaba","a");
Set<String> key = hm.keySet();
for(String key:hm){
String value = hm.get(key);
System.out.println(key+"------"+value);
}
获取到键值对集合然后分别获取键和值
HashMap<String,String> hm = new HashMap<String,String>()
hm.put("baidu","b");
hm.put("tencen","t");
hm.put("alibaba","a");
Set<Map.Entry<String,String>> set = hm.entrySet();
for(Map.Entry<String,String> me :hm){
String key = hm.getKey();
String value = hm.getValue();
System.out.println(key+"------"+value);
}
5、长度功能
int size():返回集合中的键值对的对数
TreeMap和TreeSet相同,需要排序时可实现比较器排序,使用匿名内部类的方式 new Comparator ()重写compare ()方法
下面使用Map实现一个功能:
需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)
分析:
1、接收一个字符串
2、创建一个TreeMap集合
3、将字符串转换为字符数组
4、遍历字符数组获取到每一个字符作为键
5、在集合中用键查找值,如果值为null就添加,如果键存在,值就加1再存入集合
6、创建字符缓冲数组
7、遍历集合并将集合中的键和值拼接并存入缓冲区
8、字符缓冲区转换为字符串输出
public class countNum{
public static void main(String[] args ){
Scanner sc =new Scanner(System.in);
System.out.println(" 请输入一个字符串:");
String s = sc.nextLine();
char[] ch = s.toCharArray();
TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
for(Character key:ch){
Integer i = tm.get(key);
if(i=null){
hm.put(key,1);
}else{
i++;
hm.put(key,i);
}
}
}
StringBuilder sb = new StringBuilder();
Set<Map.Entry<Character,Integer>> set = hm.entrySet();
Character key = hm.getKey();
Integer value = hm.getValue();
sb.append(key).append("(").append(value).append(")");
String result= sb.toString();
System.out.println(result);
}
}
Java集合Map与其子类回顾的更多相关文章
- Java集合Map接口与Map.Entry学习
Java集合Map接口与Map.Entry学习 Map接口不是Collection接口的继承.Map接口用于维护键/值对(key/value pairs).该接口描述了从不重复的键到值的映射. (1) ...
- Java集合Map基本方法
jdk1.7 api中的方法摘要: 参考java集合大全图:https://www.cnblogs.com/xkzhangsanx/p/10889114.html Map为所有Map子类的接口.
- Java集合——Map接口
1.定义 Map用于保存存在映射关系<key,value>的数据.其中,key值不能重复(使用equals()方法比较),value值可以重复 2.方法 V put(key,value) ...
- Java集合—Map
简介 Map用户保存具有映射关系的数据,因此Map集合里保存着两组数,一组值用户保存Map里的key,另一组值用户保存Map里的value,key和value都可以是任何引用类型的数据.Map的key ...
- java集合——Map
声明:以下内容都是来自网络总结,将会参考很多,没有声明转载来源. 一.Map接口 1.HashMap HashMap和HashTable的区别:http://blog.csdn.net/shohoku ...
- Java集合--Map总结
转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311126 第1部分 Map概括 (01) Map ...
- Java集合-----Map详解
Map与Collection并列存在.用于保存具有映射关系的数据:Key-Value Map 中的 key 和 value 都可以是任何引用类型的数据 Map 中的 ...
- Java 集合-Map接口和三个子类实现
2017-10-31 22:05:59 Map 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. HashMap是基于散列表实现的,插入.删除和定位元素时间复杂度平均能达到O ...
- Java集合----Map集合
Map Map 用于保存具有映射关系的数据,因此 Map 集合里保存着两组值,一组值用于保存 Map 里的 Key,另外一组用于保存 Map 里的 Value Map 中的 key 和 value 都 ...
随机推荐
- oracle 存储过程创建报错 Procedure created with compilation errors
出现这错误的话,存储过程还是会成功创建的,创建好后再逐个打开查找存储过程的问题 问题:基本上就是存储过程里面的表不存在,dblink 不存在 ,用户名.xx表 要么用户名不存在要么表不存在 创 ...
- 学习Spring Boot:(七)集成Mybatis
前面都是用的是spring data JPA,现在学习下Mybatis,而且现在Mybatis也像JPA那样支持注解形式了,也非常方便,学习一下. 数据库 mysql 5.7 添加依赖 在pom文件中 ...
- 在Struts2的Action中获得request response session几种方法
转载自~ 在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式.分别为se ...
- go语言从零学起(三) -- chat实现的思考
要通过go实现一个应用场景: 1 建立一个websocket服务 2 维护在线用户的链接 3 推送消息和接受用户的操作 列出需求,很显然的想到了chat模型.于是研究了revel框架提供的sample ...
- 逻辑控制之While循环控制器(While Controller)
测试环境 apache-jmeter-3.0 1. 添加While Controller 右键线程组->添加->逻辑控制器->响应断言 2. 控制面板介绍 添加后,面板如下 ...
- python核心编程笔记——Chapter8
Chapter8.条件和循环 这一章感觉有用的点并不多,在我眼里就只有迭代器,列表解析和生成器表达式值得研究而已. 8.2.循环,难度不大. #!usr/bin/env python #-*-codi ...
- 10 款非常棒的CSS代码格式化工具推荐
如果你刚开始学习CSS,这意味着你的很多代码或结构可能需要优化,比如你可能过多使用了类.添加了多余的间隔或空行等等,这将导致代码臃肿.混乱,可读性和执行效率将大大降低. 本文为你整理了几款CSS工具, ...
- web打印难题—背景不打印的简单不完美解决方案
web打印在一些开发中是比较常见的需求,最简单的办法是使用css print进行控制:对于一些建议可以参考http://slodive.com/web-development/css-print-pa ...
- 【Foreign】tty的方程math [数学]
tty的方程math Time Limit: 50 Sec Memory Limit: 128 MB Description 给定n.m.k.p. a+b+c=n, a^2+b^2+c^2=m, a ...
- 【leetcode 简单】 第八十六题 有效的完全平方数
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False. 注意:不要使用任何内置的库函数,如 sqrt. 示例 1: 输入: 16 输出: Tr ...