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. Linux(Centos6.8)配置Nginx环境

    1.环境配置 操作系统:centos6.8 [root@host79 ~]# uname -a Linux host79.pluto 2.6.32-642.el6.x86_64 #1 SMP Tue ...

  2. weblogic ssrf 漏洞笔记

    CVE-2014-4210 Oracle WebLogic web server即可以被外部主机访问,同时也允许访问内部主机.比如有一个jsp页面SearchPublicReqistries.jsp, ...

  3. (msf使用)msfconsole - meterpreter

    [msf] msfconsole meterpreter 对于这款强大渗透测试框架,详情介绍可看这里:metasploit 使用教程 对于msfconsole, Kali Linux 自带.只需用命令 ...

  4. 深度分享:面试阿里,字节跳动,美团90%会被问到的HashMap知识

    一,HashTable 哈希表,它相比于hashMap结构简单点,它没有涉及红黑树,直接使用链表的方式解决哈希冲突. 我们看它的字段,和hashMap差不多,使用table存放元素 private t ...

  5. MindManager使用教程:如何导出HTML5交互式导图

    Mindmanager思维导图软件有着友好的用户界面以及丰富的思维导图制作功能.再搭配与Microsoft 软件的无缝集成功能,使得这款思维导图软件越来越受到职场人士的喜爱. 不仅是作为制作思维导图的 ...

  6. 如何用Vegas完成视频编辑中的自动跟踪换图

    Vegas作为一款专业的视频剪辑软件,剪辑速度快捷,拥有各种实用工具和特效,同样也可以为用户实现视频换图的需求.今天小编就为大家讲解,如何利用Vegas自动跟踪进行换图,让视频能够更加便捷的呈现. 本 ...

  7. Mybatis是如何封装Jdbc的?

    JDBC六个步骤 Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { //1. 加载驱动 C ...

  8. 一文搞懂所有Java集合面试题

    Java集合 刚刚经历过秋招,看了大量的面经,顺便将常见的Java集合常考知识点总结了一下,并根据被问到的频率大致做了一个标注.一颗星表示知识点需要了解,被问到的频率不高,面试时起码能说个差不多.两颗 ...

  9. 提交的忠金融的bug

  10. P2592 [ZJOI2008]生日聚会

    容易发现已经结束掉的一个子串只要合法就对后面没有影响,所以可以令 \(f_{i,j,p,q}\) 表示前 \(i+j\) 个人有 \(i\) 个男孩,\(j\) 个女孩,所有后缀中男孩最多比女孩多 \ ...