集合进阶(四)-(Map集合)(集合嵌套)(Collections)

一、Map集合

概述

  • Interface Map<K,V> K: 键的类型;V:值的类型
  • 将键映射到值的对象;不能包含重复的键;每个键可以映射到最多一个值
  • 举例:学生的学号和姓名
001 张三
002 李四

创建Map集合的对象

  • 多态的方式
  • 具体的实现类HashMap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package Map_;

import java.util.HashMap;
import java.util.Map;

import Object_.toString_;

public class demo1 {
public static void main(String[] args) {
Map<String,String> map=new HashMap<String, String>();
map.put("001", "猪头新");
map.put("002", "猪大头");
System.out.println(map);//{001=猪头新, 002=猪大头}
}
}

二、Map集合的基本功能

方法名 说明
V put(K key,V value) 添加元素
V remove(Object key) 根据键删除键值对元素
void clear() 移除所有的键值对元素
boolean containsKey(Object key) 判断集合是否包含指定的键
boolean isEmpty() 判断集合是否为空
int size() 集合的长度,也就是集合中键值对的个数

三、Map集合的获取功能

方法名 说明
V get(Object key) 根据键获取值
Set keySet() 获取所有键的集合
Collection values() 获取所有值的集合
Set<Map.Entry<K,V> entrySet()> 获取所有键值对对象的集合

四、Map集合的遍历

转换为Map集合中的操作:

  • 获取所有键值对对象的集合

    1
    Set<Map.Entry<K,V>> entrySet()
  • 遍历键值对对象的集合,得到每一个键值对对象
    (增强for实现,得到每一个Map.Entry

  • 根据键值对对象获取键和值
    (用getKey()得到键)(用getValue()得到值)

方法一、

键和值都是String

键是String,值是对象

方法二、

键和值都是String

键是String,值是对象

五、集合嵌套

ArrayList集合存储HashMap元素并遍历

需求:创建一个ArrayList集合,存储三个元素,每一个元素都是HashMap,每一个HashMap的键和值都是String,并遍历

HashMap集合存储ArrayList元素并遍历

需求:创建一个HashMap集合,存储三个键值对元素,每一个键值对元素的键是String,值是ArrayList,每一个ArrayList的元素是String,并遍历

统计字符串中每个字符出现的次数

需求:键盘录入一个字符串,要求统计字符串中每个字符串出现的次数

要使字母自然排序,可以使用TreeMap

六、Collections

概述

Collections是针对集合操作的工具类

Collections类的常用方法

方法 作用
public static <T extends Comparable<?super T>> void sort(List list) 将指定的列表按升序排序
public static void reverse(List<?> list) 反转指定列表中元素的顺序
public static void shuffle(List<?> list) 使用默认的随机源随机排列指定的列表

案例

ArrayList存储学生对象并排序

需求:ArrayList存储学生对象,使用Collections对ArrayList进行排序

要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序

此时会出现报错,需要Student类实现comparable接口,并重写compareTo方法如下

这样就不报错了,当然也可以使用匿名内部类的方式

请我喝杯咖啡吧~

支付宝
微信