接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与其子类回顾的更多相关文章

  1. Java集合Map接口与Map.Entry学习

    Java集合Map接口与Map.Entry学习 Map接口不是Collection接口的继承.Map接口用于维护键/值对(key/value pairs).该接口描述了从不重复的键到值的映射. (1) ...

  2. Java集合Map基本方法

    jdk1.7 api中的方法摘要: 参考java集合大全图:https://www.cnblogs.com/xkzhangsanx/p/10889114.html Map为所有Map子类的接口.

  3. Java集合——Map接口

    1.定义 Map用于保存存在映射关系<key,value>的数据.其中,key值不能重复(使用equals()方法比较),value值可以重复 2.方法 V  put(key,value) ...

  4. Java集合—Map

    简介 Map用户保存具有映射关系的数据,因此Map集合里保存着两组数,一组值用户保存Map里的key,另一组值用户保存Map里的value,key和value都可以是任何引用类型的数据.Map的key ...

  5. java集合——Map

    声明:以下内容都是来自网络总结,将会参考很多,没有声明转载来源. 一.Map接口 1.HashMap HashMap和HashTable的区别:http://blog.csdn.net/shohoku ...

  6. Java集合--Map总结

    转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311126 第1部分 Map概括 (01) Map ...

  7. Java集合-----Map详解

          Map与Collection并列存在.用于保存具有映射关系的数据:Key-Value      Map 中的 key 和  value 都可以是任何引用类型的数据      Map 中的 ...

  8. Java 集合-Map接口和三个子类实现

    2017-10-31 22:05:59 Map 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. HashMap是基于散列表实现的,插入.删除和定位元素时间复杂度平均能达到O ...

  9. Java集合----Map集合

    Map Map 用于保存具有映射关系的数据,因此 Map 集合里保存着两组值,一组值用于保存 Map 里的 Key,另外一组用于保存 Map 里的 Value Map 中的 key 和 value 都 ...

随机推荐

  1. Qt环境配置 + Qt使用教程

    官方下载链接有以下: http://download.qt.io/official_releases/qt/5.8/5.8.0/ http://download.qt.io/official_rele ...

  2. 【LOJ6089】小Y的背包计数问题(动态规划)

    [LOJ6089]小Y的背包计数问题(动态规划) 题面 LOJ 题解 神仙题啊. 我们分开考虑不同的物品,按照编号与\(\sqrt n\)的关系分类. 第一类:\(i\le \sqrt n\) 即需要 ...

  3. 51nod 1421 最大MOD值 | 暴力

    题面 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以是同一个) ai,aj ,使得 ai mod aj 最大并且 ai ≥ aj. Input 单组测试数据. 第一行包含一个整数n,表示数 ...

  4. 【专题】字符串专题小结(AC自动机 + 后缀自动机)

    AC自动机相关: $fail$树: $fail$树上以最长$border$关系形成父子关系,我们定一个节点对应的串为根到该节点的路径. 对于任意一个非根节点$x$,定$y = fa_{x}$,那$y$ ...

  5. 洛谷 P2731 骑马修栅栏 Riding the Fences 解题报告

    P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样 ...

  6. Android 程序架构: MVC、MVP、MVVM、Unidirectional、Clean...

    摘选自:GUI 应用程序架构的十年变迁:MVC.MVP.MVVM.Unidirectional.Cleanhttps://zhuanlan.zhihu.com/p/26799645 MV* in An ...

  7. egg.js路由的优雅改造

    引言 在使用express,koa, 或者是egg.js进行node server开发的过程中,我们的路由基本上都是定义在controller层的,框架对于 node 原生路由都会进行一层封装,一版都 ...

  8. Laravel 项目集合

    1.  CMS LaraCMS  https://github.com/wanglelecc/laracms 2. 电商 3.  点播 MeEdu      https://github.com/Qs ...

  9. Python【关联接口的开发】

    import flask,time,json,hashlib,redis print("==============被调函数部分================")def my_m ...

  10. Hadoop基础-HDFS的API实现增删改查

    Hadoop基础-HDFS的API实现增删改查 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客开发IDE使用的是Idea,如果没有安装Idea软件的可以去下载安装,如何安装 ...