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

    }

  • 相关阅读:
    2017-11-20 中文代码示例之Vuejs入门教程(一)问题后续
    2017-10-31 中文代码示例教程之Vuejs入门&后续计划
    2017-10-29 用中文命名API的意义和途径
    2017-10-26 13年后的共鸣-在代码中用中文命名的优势和问题
    2017-07-29 中文代码示例教程之Java编程一天入门
    2017-10-10 都市传说: "部分"中文出现乱码
    MATLAB indexing question
    Rarely executed and almost empty if statement drastically reduces performance in C++
    Compiler showing 'pi' symbol on error
    Adding a struct into an array(stackoverflow)
  • 原文地址:https://www.cnblogs.com/oneo/p/10904338.html
Copyright © 2011-2022 走看看