Java基础20-Set

1.Set

1.1 Set集合的特点和概述

在这里插入图片描述

1.2 哈希值

在这里插入图片描述

1.3 HashSet的集合概述和特点

在这里插入图片描述
遍历:只能用迭代器和增强for循环遍历

import java.util.HashSet;

public class HashSetDemo {
    public static void main(String[] args) {
        HashSet<String> hashSet = new HashSet<String>();
        hashSet.add("hello");
        hashSet.add("java");
        hashSet.add("world");
        hashSet.add("java");
        for(String s : hashSet){
            System.out.println(s);
        }

    }
}
输出结果:
java
world
hello

1.4 HashSet 集合保证元素唯一性源码分析

在这里插入图片描述
在这里插入图片描述
代码如下:

public class Student {
    public String name;
    public int age;


    public String getName() {
        return name;
    }
    public Student() {
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Student)) return false;

        Student student = (Student) o;

        if (age != student.age) return false;
        return name != null ? name.equals(student.name) : student.name == null;
    }

    @Override
    public int hashCode() {
        int result = name.hashCode();
        result = 31 * result + age;
        return result;
    }
}

import java.util.HashSet;

public class HashSetDemo {
    public static void main(String[] args) {
        HashSet<Student> hashSet = new HashSet<Student>();
        Student s1 = new Student("leon",20);
        Student s2 = new Student("leon",20);
        hashSet.add(s1);
        hashSet.add(s2);
        for(Student s : hashSet){
            System.out.println(s);
        }

    }
}
输出结果:
Student{name='leon', age=20}

1.6 LinkedHashSet 的集合概述和特点

在这里插入图片描述

1.7 TreeSet 的集合概述和特点

在这里插入图片描述

import java.util.TreeSet;

public class TreeSetDemo {
    public static void main(String[] args) {
        TreeSet<Integer>  treeSet = new TreeSet<>();
        treeSet.add(10);
        treeSet.add(30);
        treeSet.add(6);
        treeSet.add(30);
        for(Integer i:treeSet){
            System.out.println(i);
        }
    }
}
输出结果:
6
10
30

1.8 自然排序Comparable的使用

在这里插入图片描述


public class Student implements Comparable<Student> {
    public String name;
    public int age;


    public String getName() {
        return name;
    }

    public Student() {
    }

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

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public int compareTo(Student s) {
        int num = this.age - s.age;
        int mum2 = num==0?this.name.compareTo(s.name):num;
        return mum2;
    }
}
import java.util.TreeSet;

public class TreeSetDemo {
    public static void main(String[] args) {
        TreeSet<Student>  treeSet = new TreeSet<>();
        Student s1 = new Student("alisa",30);
        Student s2 = new Student("tom",20);
        Student s3 = new Student("leon",30);
        treeSet.add(s1);
        treeSet.add(s2);
        treeSet.add(s3);
        for(Student s :treeSet){
            System.out.println(s.getName()+","+s.getAge());
        }
    }
}
输出结果:
tom,20
alisa,30
leon,30

1.9 比较器排序Comparator的使用

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200402183045843.png


public class Student  {
    public String name;
    public int age;


    public String getName() {
        return name;
    }

    public Student() {
    }

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

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

}
import java.util.Comparator;
import java.util.TreeSet;

public class TreeSetDemo {
    public static void main(String[] args) {
        TreeSet<Student>  treeSet = new TreeSet<>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                int num = o1.getAge()-o2.getAge();
                int num2 = num==0?o1.getName().compareTo(o2.getName()):num;
                return num2;
            }
        });
        Student s1 = new Student("alisa",30);
        Student s2 = new Student("tom",20);
        Student s3 = new Student("leon",30);
        Student s4 = new Student("leon",30);
        treeSet.add(s1);
        treeSet.add(s2);
        treeSet.add(s3);
        treeSet.add(s4);
        for(Student s :treeSet){
            System.out.println(s.getName()+","+s.getAge());
        }
    }
}
输出结果:
tom,20
alisa,30
leon,30

在这里插入图片描述

import java.util.HashSet;
import  java.util.Set;

public class TreeSetDemo {
    public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();
        while(set.size() < 10){
            int num = (int)((Math.random())*20+1);
            set.add(num);
        }
        System.out.println(set);
    }
}
输出结果:
[17, 3, 19, 5, 7, 11, 12, 13, 14, 15]

2.泛型

在这里插入图片描述

2.1 泛型类

在这里插入图片描述

2.3 泛型方法

在这里插入图片描述

2.4 泛型接口

在这里插入图片描述

2.5 类型通配符

在这里插入图片描述

2.6 可变参数

在这里插入图片描述

public class ArgsDemo {
    public static void main(String[] args) {
        System.out.println(num(20,40,10));
    }
    public static int num(int...a){
        int sum=0;
        for(int i :a){
            sum+=i;
        }
        return sum;
    }
}
输出结果:
70

2.7 可变参数的使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值