java map的子类_Java集合Map与其子类回顾

接10月12号昨天的笔记,今天继续回顾集合中的Map集合。

一、集合工具操作类Collections

问题:collection和collections的区别?

1、collection是单列集合的顶层接口,它有List和Set子接口

2、collections是集合的一个操作类,里面包含的都是一些集合操作的静态方法

Collections的方法概述

1、排序

public static void sort(Listlist):排序 默认情况下是自然顺序。

ArrayList list = new ArrayList();

list.add(10);

list.add(50);

list.add(5);

Collections.sort(list);

sort可以针对基本数据类型进行排序,也可以针对引用类型进行排序。只是传入参数不同。

注意:如果该类同时实现了自然排序和比较器排序,那么优先使用比较器排序。

下面是一个学生类用比较器(匿名内部类)的方法实现的排序。

public static void sort(List list, Comparator super T>c)

Collections.sort(list,new Comparator() {

@Overridepublic intcompare(Student s1, Student s2) {int num = s2.getAge() -s1.getAge();int num2 = num == 0 ?s1.getName().compareTo(s2.getName()): num;returnnum2;

}

});

2、二分查找

public static int binarySearch(List>list,T key)

返回值:当查找的键在列表中,返回键在集合中索引;否则返回(-(插入索引)-1)。

注意:使用二分查找时,需要对集合进行排序(sort(list)),否则无法确定查找键的位置。

3、最大值

public static 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 map = new hashMap();

map.put("baidu","B");

map.put("alibaba","A");

map.put("tencen","t");

2、删除功能

voidclear():移除所有的键值对元素

V remove(Object key):根据键删除键值对元素,并把值返回

3、判断功能

booleancontainsKey(Object key):判断集合是否包含指定的键booleancontainsValue(Object value):判断集合是否包含指定的值boolean isEmpty():判断集合是否为空

4、获取功能

Set> entrySet():获取键值对集合V get(Object key):根据键获取值

SetkeySet():获取集合中所有键的集合

Collection values():获取集合中所有值的集合

通过键获取到值

HashMap hm = new HashMap()

hm.put("baidu","B");

hm.put("tencen","t");

hm.put("alibaba","a");

Set key =hm.keySet();for(String key:hm){

String value=hm.get(key);

System.out.println(key+"------"+value);

}

获取到键值对集合然后分别获取键和值

HashMap hm = new HashMap()

hm.put("baidu","b");

hm.put("tencen","t");

hm.put("alibaba","a");

Set> set =hm.entrySet();for(Map.Entryme :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 classcountNum{public static voidmain(String[] args ){

Scanner sc=newScanner(System.in);

System.out.println(" 请输入一个字符串:");

String s=sc.nextLine();char[] ch =s.toCharArray();

TreeMap tm = new TreeMap();for(Character key:ch){

Integer i=tm.get(key);if(i=null){

hm.put(key,1);

}else{

i++;

hm.put(key,i);

}

}

}

StringBuilder sb= newStringBuilder();

Set> 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);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值