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. pip install 一个本地包时提示error: Microsoft Visual C++ 14.0 is required.

    错误如下: error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Too ...

  2. 巧妙利用Camtasia制作网课

    随着互联网的快速发展,网络学习变得非常流行.这种躺在床上就可以获取知识的方法让大家渐渐地都喜欢上了学习,那么我们是否想要了解一下网课的幕后制作呢. 今天我给大家带来的便是巧妙利用Camtasia进行网 ...

  3. CorelDRAW“出血线”的精准预设与辅助线便捷操作

    CorelDRAW软件是一款常用的制图工具,非常适合用于印刷品输出,各种印刷图文制作都依赖于它.所以,我们设计者每次用CorelDRAW制图的一个关键就是要做好"标尺辅助线"设置, ...

  4. guitar pro系列教程(三):Guitar Pro7乐谱页面显示模式设置

    大家好,又到了guitar pro系列教程的时间 本章节我们采用图文结合的方式为大家讲解一下guitar pro 7乐谱的页面显示设置,有兴趣的小伙伴都可以进来看看哦.首让我们先看下图: 如上图所示, ...

  5. leetcode152. 乘积最大子序列

    给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数).示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6.示例 2:输入: ...

  6. kafka 数据存储和发送

    摘要 前面我们已经解释获取和更新metadata以及重要性,那么如何给topic 发送数据? kafkaclient和broker通信,有很多种情况,核心的broker提供的接口有6个 元数据接口(M ...

  7. Java基础教程——内部类

    内部类 内部类(inner class)是定义在另一个类中的类 内部类的好处: |--1.隐藏机制:内部类封装性更好,隐藏在一个类之中,同一包中的其他类也不能访问 |--2.内部类可以访问外围类的私有 ...

  8. Java集合【7】--List接口超级详细解析

    目录 1.List接口的特性 2.List接口的源码解析 3.相关子类介绍 3.1 ArrayList 3.1.1 成员变量 3.1.2 构造方法 3.1.3 常用增删改查方法 添加元素 查询元素 更 ...

  9. GraphicsLab 之 Atmospheric Scattering (一)

    作者:i_dovelemon 日期:2020-10-11 主题:Atmospheric Scattering, Volume Scattering, Rayleigh Scattering, Mie ...

  10. 你知道第一个C语言C++编译器是如何诞生的吗?

    当今几乎所有的实用的编译器/解释器(以下统称编译器)都是用 C 语言编写的,有一些语言比如 Clojure,Jython 等是基于 JVM 或者说是用 Java 实现的,IronPython 等是基于 ...