1.Map集合

1.1 Map集合概述和特点

1 interface Map<K,V> K:键的类型;V:值的类型

Map集合的特点

  键值对映射关系

  一个键对应一个值

  键不能重复,值可以重复 元素存取无序

1.2 Map集合的基本功能

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

1.3 Map集合的获取功能

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

1.4 Map集合的遍历(方式1)

遍历思路

  我们刚才存储的元素都是成对出现的,所以我们把Map看成是一个夫妻对的集合

  把所有的丈夫给集中起来遍历丈夫的集合,获取到每一个丈夫

  根据丈夫去找对应的妻子

步骤分析

  获取所有键的集合。用keySet()方法实现。

 1 import java.util.HashMap;
2 import java.util.HashSet;
3 import java.util.Map;
4 import java.util.Set;
5
6 public class kb {
7 public static void main(String[] args) {
8 Map<String,String> sl = new HashMap<>();
9 sl.put("1","超人");
10 sl.put("2","蝙蝠侠");
11 sl.put("3","闪电侠");
12
13 Set<String> key = new HashSet<>();
14 key = sl.keySet();
15
16 for (String id : key){
17 System.out.println(id+sl.get(id));
18 }
19 }
20 }

1.5 Map集合的遍历(方式2)

遍历思路

  我们刚才存储的元素都是成对出现的,所以我们把Map看成是一个夫妻对的集合

    获取所有结婚证的集合

    遍历结婚证的集合,得到每一个结婚证

    根据结婚证获取丈夫和妻子

步骤分析

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

    Set<map.entry<k,v>>entrySet():获取所有键值对对象的集合

  遍历键值对对象的集合,得到每一个键值对对象

    用增强for实现,得到每一个Map.Entry

  根据键值对对象获取键和值

    用getKey()得到键

    用getValue()得到值

 1 import java.util.HashMap;
2 import java.util.HashSet;
3 import java.util.Map;
4 import java.util.Set;
5
6 public class kb {
7 public static void main(String[] args) {
8 Map<String, String> sl = new HashMap<>();
9 sl.put("1", "超人");
10 sl.put("2", "蝙蝠侠");
11 sl.put("3", "闪电侠");
12
13 Set<Map.Entry<String, String>> entrySet = sl.entrySet();
14
15 for (Map.Entry<String, String> me : entrySet) {
16 System.out.println(me.getKey() + "\t" + me.getValue());
17 }
18 }
19 }

2.Collections集合工具类

2.1 Collections概述和使用

Collections类的作用

  是针对集合操作的工具类

常用方法

方法名 说明
public static void sort(List list) 将指定的列表按升序排序
public static void reverse(List list) 反转指定列表中元素的顺序
public static void shuffle(List list) 使用默认的随机源随机排列指定的列表

2.2 ArrayList集合存储学生并排序

案例需求

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

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

学生类

 1 public class Student {
2 private String name;
3 private int age;
4
5 public Student() {
6 }
7
8 public Student(String name, int age) {
9 this.name = name;
10 this.age = age;
11 }
12
13 public String getName() {
14 return name;
15 }
16
17 public void setName(String name) {
18 this.name = name;
19 }
20
21 public int getAge() {
22 return age;
23 }
24
25 public void setAge(int age) {
26 this.age = age;
27 }
28
29 @Override
30 public boolean equals(Object o) {
31 if (this == o) return true;
32 if (o == null || getClass() != o.getClass()) return false;
33
34 Student student = (Student) o;
35
36 if (age != student.age) return false;
37 return name != null ? name.equals(student.name) : student.name == null;
38 }
39
40 @Override
41 public int hashCode() {
42 int result = name != null ? name.hashCode() : 0;
43 result = 31 * result + age;
44 return result;
45 }
46
47 @Override
48 public String toString() {
49 return "Student{" +
50 "name='" + name + '\'' +
51 ", age=" + age +
52 '}';
53 }
54 }

排序测试类

 1 import java.util.*;
2
3 public class newComparator {
4 public static void main(String[] args) {
5 Student s1 = new Student("Tony",21);
6 Student s2 = new Student("xiaohong",21);
7 Student s3 = new Student("wangdachui",800);
8
9 ArrayList<Student> stu = new ArrayList<>();
10
11 stu.add(s1);
12 stu.add(s2);
13 stu.add(s3);
14
15 Collections.sort(stu, new Comparator<Student>() {
16 @Override
17 public int compare(Student o1, Student o2) {
18 int num = o1.getAge() - o2.getAge();
19 int num2 = num == 0 ?o1.getName().compareTo(o2.getName()):num;
20 return num2;
21 }
22 });
23
24 for (Student s : stu){
25 System.out.println(s.getName()+"\t"+s.getAge());
26 }
27 }
28 }

JavaSE16-集合·其三的更多相关文章

  1. JavaSE-16 集合框架

    学习要点 Java集合框架内容 ArrayList和LinkedList HashMap Iterator 泛型集合 Java的集合框架 1  概述 数据结构是以某种形式将数据组织在一起的集合,它不仅 ...

  2. 集合不安全之 ArrayList及其三种解决方案【CopyOnWriteArrayList 、synchronizedList、Vector 】

    @ 目录 一.前言 二.为什么线程不安全 三.解决方案一CopyOnWriteArrayList (推荐,读多写少场景) 四.Collections.synchronizedList(加锁) 五.Ve ...

  3. Java集合---ArrayList的实现原理

    目录: 一. ArrayList概述 二. ArrayList的实现 1) 私有属性 2) 构造方法 3) 元素存储 4) 元素读取 5) 元素删除                 6) 调整数组容量 ...

  4. ArrayList集合的实现原理

    一. ArrayList概述: ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境 ...

  5. 转:【Java集合源码剖析】ArrayList源码剖析

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/35568011   本篇博文参加了CSDN博文大赛,如果您觉得这篇博文不错,希望您能帮我投一 ...

  6. ava集合---ArrayList的实现原理

    一.ArrayList概述 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存 ArrayList不是线程安全的,只能用在单线程环境下,多 ...

  7. Redis自学笔记:3.5入门-集合类型

    3.5集合类型 3.5.1介绍 在集合中的每个元素都是不同的,且没有顺序 表3-4集合类型和列表类型的对比 - 集合类型 列表类型 存储内容 至多232-1个字符串 至多232-1个字符串 有序性 否 ...

  8. Java集合:ArrayList的实现原理

    Java集合---ArrayList的实现原理   目录: 一. ArrayList概述 二. ArrayList的实现 1) 私有属性 2) 构造方法 3) 元素存储 4) 元素读取 5) 元素删除 ...

  9. 集合(2)—Collection之List的使用方法

    声明集合变量 List list = new ArrayList(); 或者 : public LIst list: public 构造函数(){ this.list = new ArrayList( ...

  10. 【Java集合源代码剖析】ArrayList源代码剖析

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mmc_maodun/article/details/35568011 转载请注明出处:http:// ...

随机推荐

  1. Hadoop大数据平台之Kafka部署

    环境:CentOS 7.4 (1708  DVD) 工具:Xshell+Xftp 1. 使用xftp将kafka上传到/usr/local目录下,将kafka解压并重命名. 2. 编辑kafka/co ...

  2. java开发两年!这些异常处理的方式你得知道,不然你凭什么涨薪!

    前言 异常是在程序中导致程序中断运行的一种指令流,当异常发生时,程序将直接中断,不再执行后续的任何操作! 示例:两数相除,若不处理任何异常,则只有在正确输入两个数字时,才能显示出运算结果. publi ...

  3. 【JAVA基础】数组练习案例一

    /* * * 输入5个学生成绩 * 计算出每个成绩与最高分的差距 * 根据差距分配等级 * * */ import java.util.Scanner; public class ArrayTask ...

  4. pdfFactory如何设置限制打印和浏览文档权限

    当我们进行私密文件的分享时,除了要设置密码保护文件内容外,还要注意设置打印限制,防止他人利用打印的方式,进行纸质文件的传播. 在使用pdfFactory安全策略时,我们可以通过设定禁止打印的方式,完全 ...

  5. Vegas视频的音频叠加效果怎么实现,可以用其他软件吗

    有时我们会用Vegas为某段影片配音,我们要怎么把配音和背景声融合在一起呢?想必马上会有人反应过来:让配音和背景声分别置于两条轨道上就好了.这当然是一个相当好的方式. 可是,如果我想要把两段音频合成一 ...

  6. guitar pro系列教程(二十一):Guitar Pro在乐谱上的工作【一】

    当我们使用Guitar Pro写好一首乐谱之后,通常在乐谱上还会有哪些操作呢?对于刚接触{cms_selflink page='index' text='Guitar Pro'}的朋友们肯定还是不熟悉 ...

  7. 为什么换了电脑安装MindManager提示密钥失效?

    相信很多MindManager用户遇到过这样的问题,不想在原电脑上使用MindManager思维导图软件,想要换电脑安装,但是提示该许可证密钥失效了.下面文章就教大家如何解决这个问题: 我们在Mind ...

  8. 安装Ubuntu时到底该如何分区

    安装系统:Ubuntu16.04(单系统) /(根分区),主分区,   Ext4文件系统,100G-200G /boot分区,   逻辑分区,Ext4文件系统,~200MB /home分区, 逻辑分区 ...

  9. 【模板】【P3605】【USACO17JAN】Promotion Counting 晋升者计数——动态开点和线段树合并(树状数组/主席树)

    (题面来自Luogu) 题目描述 奶牛们又一次试图创建一家创业公司,还是没有从过去的经验中吸取教训--牛是可怕的管理者! 为了方便,把奶牛从 1⋯N(1≤N≤100,000) 编号,把公司组织成一棵树 ...

  10. PADS CAM光绘输出文件设置

    PADS CAM光绘输出文件设置 在使用PADS完成电路板的设计后,通常还需要在CAM350中经过一些处理生成Gerber文件,交给制板厂商进行电路板的生产,这就要求在PADS中设置生成CAM文件,然 ...