赞
踩
Set集合是Collection单列集合的子接口,主要特点:
Set集合遍历:
- public class Demo {
- public static void main(String[] args) {
- Set<String> set = new TreeSet<>();
- set.add("aaa");
- set.add("ddd");
- set.add("bbb");
- set.add("aaa");
- //迭代器遍历
- Iterator<String> it = set.iterator();
- while (it.hasNext()){
- String s = it.next();
- System.out.println(s);
- }
- System.out.println("*****************************");
- //增强for循环
- for (String s : set) {
- System.out.println(s);
- }
- }
- }

TreeSet集合是Set接口的实现类,主要特点:
实现步骤:
- public class Student implements Comparable<Student>{
- private String name;
- private int age;
-
- @Override
- public int compareTo(Student o) {
- //主要判断条件
- int result = this.age - o.age;
- //次要判断条件
- result = this.age == o.age ? this.name.compareTo(o.name) : result;
- return result;
- }
-
- @Override
- public String toString() {
- return "Student{" +
- "name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- public Student(String name, int age) {
- this.name = name;
- this.age = age;
- }
-
- public Student() {
- }
- }

- import java.util.TreeSet;
-
- public class TreeSetDemo {
- public static void main(String[] args) {
- TreeSet<Student> students = new TreeSet<>();
-
- Student stu1 = new Student("zhangliang", 59);
- Student stu2 = new Student("likui", 43);
- Student stu3 = new Student("abc", 38);
- Student stu4 = new Student("acb", 38);
- Student stu5 = new Student("zhouyu", 26);
- students.add(stu1);
- students.add(stu2);
- students.add(stu3);
- students.add(stu4);
- students.add(stu5);
-
- System.out.println(students);
- }
- }

TreeSet集合的构造方法接收Comparator的实现类对象(匿名内部类),重写compare方法
案例需求:
- public class Teacher {
- private String name;
- private int age;
-
- @Override
- public String toString() {
- return "Teacher{" +
- "name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- public Teacher(String name, int age) {
- this.name = name;
- this.age = age;
- }
-
- public Teacher() {
- }
- }

- import java.util.Comparator;
- import java.util.TreeSet;
-
- public class TreeSetDemo1 {
- public static void main(String[] args) {
- //使用匿名内部类创建Comparator实现类,重写compare方法
- TreeSet<Teacher> teachers= new TreeSet<>(new Comparator<Teacher>() {
- @Override
- public int compare(Teacher o1, Teacher o2) {
- int result = o1.getAge() - o2.getAge();
- result = result == 0 ? o1.getName().compareTo(o2.getName()) : result;
- return result;
- }
- });
-
- Teacher teacher1 = new Teacher("abc" , 26);
- Teacher teacher2 = new Teacher("acb" , 26);
- Teacher teacher3 = new Teacher("wangling" , 19);
- Teacher teacher4 = new Teacher("deshrng" , 56);
- Teacher teacher5 = new Teacher("hangjinh" , 36);
- teachers.add(teacher1);
- teachers.add(teacher2);
- teachers.add(teacher3);
- teachers.add(teacher4);
- teachers.add(teacher5);
-
- System.out.println(teachers);
- }
- }

两种方式中关于返回值的规则:
HashSet集合是Set接口的实现类,主要特点:
哈希值:
学生类,重写hashCode和equals方法,去除重复学生对象:
- public class Student {
- private String name;
- private int age;
-
- public Student() {
- }
-
- public Student(String name, int age) {
- this.name = name;
- this.age = age;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) 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 != null ? name.hashCode() : 0;
- result = 31 * result + age;
- return result;
- }
- }

测试类,将学生对象存入HashSet集合并遍历:
- public class HashSetDemo02 {
- public static void main(String[] args) {
- //创建HashSet集合对象
- HashSet<Student> hs = new HashSet<Student>();
-
- //创建学生对象
- Student s1 = new Student("林青霞", 30);
- Student s2 = new Student("张曼玉", 35);
- Student s3 = new Student("王祖贤", 33);
-
- Student s4 = new Student("王祖贤", 33);
-
- //把学生添加到集合
- hs.add(s1);
- hs.add(s2);
- hs.add(s3);
- hs.add(s4);
-
- //遍历集合(增强for)
- for (Student s : hs) {
- System.out.println(s.getName() + "," + s.getAge());
- }
- }
- }

如有错误欢迎留言评论,及时更正。2021年六月四日 羽露风
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。