第7章-第7节-Java中的TreeMap和HashTable以及collections工具类

1、TreeMap:

1)、 概述

TreeMap 是一个有序的key-value集合,它是通过红黑树实现的

2)、 特点

  • 键值对映射关系

  • 一个键对应一个值

  • 键不能重复,值可以重复

  • 键允许为空值

  • 元素有序(具体的排序规则有Comparable 或者 Comparator决定)

3)、 使用

java 复制代码
import java.util.Map;
import java.util.TreeMap;

public class TreeMapDemo {
    public static void main(String[] args) {
        Map<String, String> map = new TreeMap<>();
        map.put("zs", "zhangsan");
        map.put("ls", "lisi");
        map.put("ww", "wangwu");

        // 添加不进去了,因为key值重复了
        map.put("zs", "zhangshuai");

        System.out.println(map);
    }
}

2、HashTable:

1)、 概述

HashTable与HashMap是使用几乎一模一样

2)、 特点

存储数据的特点也是与HashMap一样

3)、 使用

当需要线程安全时,使用HashTable,否则使用HashMap

非线程安全 线程安全
ArrayList Vector
HashMap HashTable

3、 collections工具类:

1)、 概述

类似数组工具类Arrays,集合工具类里面提供了很多静态的方法,能够通过类名直接调用。

2)、 常用的方法

方法名 说明
public static void sort(List<T> list) 将指定的列表按升序排序
public static void reverse(List<?> list) 反转指定列表中元素的顺序
public static void shuffle(List<?> list) 使用默认的随机源随机排列指定的列表 洗牌
java 复制代码
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class CollectionsDemo01 {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(5);
        list.add(1);
        list.add(4);
        list.add(3);
        list.add(21);
        System.out.println("排序前:" + list);
        Collections.sort(list);// 默认按照升序进行排列
        System.out.println("排序后:" + list);
        Collections.reverse(list);
        System.out.println("反转后:" + list);

        System.out.println("------------------------------");

        List<String> list2 = new ArrayList<>();
        list2.add("zhangsan");
        list2.add("lisi");
        list2.add("wangwu");
        list2.add("zhaoliu");
        System.out.println("排序前:" + list2);
        Collections.sort(list2);// 默认按照升序进行排列
        System.out.println("排序后:" + list2);
        Collections.reverse(list2);
        System.out.println("反转后:" + list2);

        System.out.println("------------------------------");

        // 打乱顺序
        Collections.shuffle(list2);
        System.out.println(list2);
    }
}

3)、 指定规则排序

java 复制代码
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class CollectionsDemo02 {
    public static void main(String[] args) {
        List<Student> list = new ArrayList<>();
        list.add(new Student("zhangsan", 38));
        list.add(new Student("lisi", 18));
        list.add(new Student("wangwu", 21));

        // 排序前
        System.out.println("排序前:" + list);
        // 采用匿名内部类的形式
        Collections.sort(list, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                int num = o1.getAge() - o2.getAge();
                if(num == 0){
                    num = o1.getName().compareTo(o2.getName());
                }

                return num;
            }
        });
        System.out.println("排序后:" + list);
    }
}

本电子书目录:《Java基础的重点知识点全集》

相关推荐
马优晨7 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
维天说10 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zane199411 小时前
并发 vs 并行:别再傻傻分不清了,一文讲透 Java 并发编程的第一课
java·后端
噢,我明白了12 小时前
java中Excel的导入和导出(EasyExcel)
java·开发语言·excel
吠品12 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
啊湘12 小时前
天气查询API接口 按月Token鉴权 实时天气 物联网可用 文档齐全
java·后端·struts
Java内核笔记12 小时前
告别十亿美元的错误 : Spring Boot 4 空安全 (JSpecify) 实战
java·spring boot·后端
糖果店的幽灵12 小时前
langgraph的 MessagesState 解读
java·开发语言·人工智能·windows·langgraph
极光代码工作室14 小时前
基于SpringBoot的在线博客系统
java·springboot·web开发·后端开发
我是唐青枫14 小时前
Java Spring Security 实战详解:从登录认证到 JWT 权限控制
java·spring