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();
    }

    }

  • 相关阅读:
    Nginx 配置实例-动静分离
    nginx-轮询、权重、ip_hash 、fair模式
    nginx-负载均衡
    nginx 常用的命令和配置文件
    Nginx 的简介
    阿里云--安装nginx AND访问超时
    阿里云-docker安装redis AND(docker基本操作命令)
    阿里云-docker安装mysql
    阅读金字塔原理笔记1
    Springboot-整合redis
  • 原文地址:https://www.cnblogs.com/oneo/p/10904338.html
Copyright © 2011-2022 走看看