Day12_8 Java学习之Collections、TreeSet与Map集合

本文详细介绍了Java中的Collections工具类,包括shuffle和sort方法的使用,以及可变参数类型的概述。接着讲解了TreeSet集合的特点和自定义排序规则的实现。此外,还探讨了Map集合的概述、常用子类如HashMap、LinkedHashMap和TreeMap,以及Map的遍历方法。文章通过实例展示了如何在实际开发中运用这些集合和工具类。
摘要由CSDN通过智能技术生成

目录

一、Collections工具类

Collections工具类概述:

Collections工具类中的常用静态方法

 可变参数类型概述

二、TreeSet集合

TreeSet集合的概述及特点

 三、Map集合

Map集合的概述

Map集合的常用子类

Map集合的遍历

Map集合使用的演示


一、Collections工具类

  • Collections工具类概述:

解析:

1.Collections是在Java.util包下的对于集合操作的工具类。

2.该类是 Java 提供的一个操作 Set、List 和 Map 等集合的工具类。

3.由于该类的构造方法被私有化无法创建实例对象调用方法,所以Collections 类提供了许多操作集合的静态方法直接使用类名调用静态方法,借助这些静态方法可以实现集合元素的排序、查找替换和复制等操作。

  • Collections工具类中的常用静态方法

1.public static void shuffle(List<?> list) :作用: 打乱List集合中的元素顺序。

使用代码演示:

public class Test2 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(2);
        list.add(11);
        list.add(35);

        for (Integer s : list) {
            System.out.println(s);
        }
        // 打乱顺序的方法
        System.out.println("---------");
        Collections.shuffle(list);
        for (Integer s : list) {
            System.out.println(s);
        }
}

运行结果:

 2.public static <T extends Comparable<? super T>> void sort(List<T> list)  :作用:将集合中元素按照默认规则排序。

特别注意:在集合中的泛型定义为要排序的元素数据类型的类,在使用这方法时必须实现Comparable接口里的compareTo抽象方法,且该方法只能是List类型的集合才能使用。

//子类实现后,需要进行重写

返回值int,只关心正负或者0,不需要关系具体值
  
原始排序:this【我】  o【他】
如果要升序排序:我减他
如果要降序排序:他减我
 // 因为返回值是int类型
如果比较的属性类型是浮点型:
    this.score = 99.9     o.score = 99.5
      if(this.score>o.score){
        return 1;
    }else if(this.score<0.score){
        return -1;
    }else{
        return 0;
    }

 代码使用演示:

student学生类,分数按照降序,年龄升序排列

package com.feisi.work22;
public class Student implements Comparable<Student> {
    String name;
    int age;
    float score;

    public Student() {
    }

    public Student(String name, int age, float score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", score=" + score +
                '}';
    }

    @Override
    public int compareTo(Student student) {
        // 成绩降序 年龄升序
        if (student.score > this.score) {
            return 1;
        } else if (student.score < this.score) {
            return -1;
        } else  {
            return this.age - student.age;
        }
    }
}

测试类:

package com.feisi.work22;

import java.util.ArrayList;
import java.util.Collections;

public class StudentTest {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        list.add(new Student("liusan",20,90.0F));
        list.add(new Student("lisi",22,90.0F));
        list.add(new Student("wangwu",20,99.0F));
        list.add(new Student("sunliu",22,100.0F));
        // 使用comparable排序
        Collections.sort(list);
        for (Student student : list) {
            System.out.println(student);
        }
        
    }

}

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值