zoukankan      html  css  js  c++  java
  • 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();
    }

    }

  • 相关阅读:
    Leetcode Binary Tree Level Order Traversal
    Leetcode Symmetric Tree
    Leetcode Same Tree
    Leetcode Unique Paths
    Leetcode Populating Next Right Pointers in Each Node
    Leetcode Maximum Depth of Binary Tree
    Leetcode Minimum Path Sum
    Leetcode Merge Two Sorted Lists
    Leetcode Climbing Stairs
    Leetcode Triangle
  • 原文地址:https://www.cnblogs.com/oneo/p/10904338.html
Copyright © 2011-2022 走看看