• Set集合


    1.特点:无序、对象不能重复(eqauls)

     eqauls从Object继承,默认比较地址

    2.遍历

    Foreach

    迭代器

    3.常用实现类

    HashSet

    TreeSet:根据某种(规则)对里面的元素进行排序

        规则1:java.lang.Comparable

        规则2:java.util.Comparator

    package com.zking.temp;

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

    public class Demo01 {
    public static void main(String[] args) {

    //不可以重复 并且是无序的
    //自然排序 按照A-Z

    // Set<String> set = new HashSet<>();
    // set.add("zs");
    // set.add("ls");
    // set.add("ww");
    // set.add("qq");
    // set.add("zs");
    // System.out.println(set.size());
    //
    //
    // Iterator<String> it = set.iterator();
    // while(it.hasNext()) {
    // System.out.println(it.next());
    // }
    // System.out.println("----------------------------------");
    // for (String s : set) {
    // System.out.println(s);
    // }


    //equals 比较的是内存地址而不是对象的属性值
    Set<Person> s = new HashSet<>();
    s.add(new Person(1,"zs",18));
    s.add(new Person(3,"ww",20));
    s.add(new Person(2,"ls",19));
    s.add(new Person(5,"qq",22));
    s.add(new Person(4,"zl",21));
    //foreach的底层原理就是迭代器
    for (Person p : s) {
    //默认转换为String的类型
    System.out.println(p);
    }
    }
    }

    package com.zking.temp;

    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.Set;
    import java.util.TreeSet;

    public class Demo02 {
    public static void main(String[] args) {

    // Set<String> set = new TreeSet<>();
    // set.add("zs");
    // set.add("ls");
    // set.add("ww");
    // set.add("qq");
    // set.add("zs");
    // System.out.println(set.size());
    //
    //
    // Iterator<String> it = set.iterator();
    // while(it.hasNext()) {
    // System.out.println(it.next());
    // }
    // System.out.println("----------------------------------");
    // for (String s : set) {
    // System.out.println(s);
    // }


    //自然排序器
    // Set<Person> s = new TreeSet<>();
    // s.add(new Person(1,"zs",18));
    // s.add(new Person(3,"ww",20));
    // s.add(new Person(2,"ls",19));
    // s.add(new Person(5,"qq",22));
    // s.add(new Person(4,"zl",21));
    // //foreach的底层原理就是迭代器
    // for (Person p : s) {
    // //默认转换为String的类型
    // System.out.println(p);
    // }

    //自定义排序器
    Set<Person> s = new TreeSet<>(new Age());
    s.add(new Person(1,"zs",18));
    s.add(new Person(3,"ww",200));
    s.add(new Person(2,"ls",19));
    s.add(new Person(5,"qq",22));
    s.add(new Person(4,"zl",21));
    //foreach的底层原理就是迭代器
    for (Person p : s) {
    //默认转换为String的类型
    System.out.println(p);
    }


    }
    }

    package com.zking.temp;

    public class Person implements Comparable<Person> {

    private int sid;
    private String sname;
    private int sage;

    public Person() {
    super();
    }

    public Person(int sid, String sname, int sage) {
    super();
    this.sid = sid;
    this.sname = sname;
    this.sage = sage;
    }

    public int getSid() {
    return sid;
    }
    public void setSid(int sid) {
    this.sid = sid;
    }
    public String getSname() {
    return sname;
    }
    public void setSname(String sname) {
    this.sname = sname;
    }
    public int getSage() {
    return sage;
    }
    public void setSage(int sage) {
    this.sage = sage;
    }

    @Override
    public int hashCode() {

    return this.sid+this.sage;
    }

    @Override
    public boolean equals(Object obj) {
    //判断当前对象的类型(所属的自定义类的名称)
    boolean flag = false;
    if(obj instanceof Person) {
    Person p = (Person) obj;
    if(this.sid==p.sid) {
    if(this.sage==p.sage) {
    if(this.sname==p.sname) {
    flag=true;
    }
    }
    }
    }
    return false;
    }

    @Override
    public String toString() {
    return "Person [sid=" + sid + ", sname=" + sname + ", sage=" + sage + "]";
    }

    @Override
    public int compareTo(Person o) {

    return this.sid-o.sid;
    }





    }

    package com.zking.temp;

    import java.util.Comparator;

    public class Age implements Comparator<Person> {

    @Override
    public int compare(Person o1, Person o2) {
    // TODO Auto-generated method stub
    return o1.getSage()-o2.getSage();
    }

    }

  • 相关阅读:
    Sicily 1153. 马的周游问题 解题报告
    回溯法与八皇后问题
    Sicily 1151. 魔板 解题报告
    Sicily 1176. Two Ends 解题报告
    Sicily 1046. Plane Spotting 解题报告
    Java多线程11:ReentrantLock的使用和Condition
    Java多线程10:ThreadLocal的作用及使用
    Java多线程9:ThreadLocal源码剖析
    Java多线程8:wait()和notify()/notifyAll()
    Java多线程7:死锁
  • 原文地址:https://www.cnblogs.com/oneo/p/10904338.html
Copyright © 2020-2023  润新知