• [Java 13 类集合] BasicContainer, Collection, Set, HashSet, TreeSet


    Container, Set, equals, hashCode()
    package com.qunar.basicJava.javase.p13_ClassCollection;
    
    import java.util.Collection; /** 存放单值的最大父接口 */
    import java.util.HashSet;
    
    /**
     * Author: libin.chen@qunar.com  Date: 14-6-9 15:58
     */
    public class BasicContainer {
        public static void main(String[] args) {
            Collection c = new HashSet();
    
            c.add("hello");
            c.add(new Name("f1", "l1"));
            c.add(new Integer(100));
    
            c.remove("hello");
            c.remove(new Integer(100));
    
            System.out.println(c.remove(new Name("f1", "l1")));
            System.out.println(c);
        }
    }
    
    class Name implements Comparable {
        private String firstName, lastName;
    
        public Name(String firstName, String lastName) {
            this.firstName = firstName;
            this.lastName = lastName;
        }
    
        public String getFirstName() {
            return firstName;
        }
    
        public String getLastName() {
            return lastName;
        }
    
        public String toString() {
            return firstName + " " + lastName;
        }
    
        public boolean equals(Object obj) {
            if (obj instanceof Name) {
                Name name = (Name) obj;
                return (firstName.equals(name.firstName))
                        && (lastName.equals(name.lastName));
            }
            return super.equals(obj);
        }
    
        public int hashCode() {
            return firstName.hashCode(); // 重写 equals 方法必须要重写 hashCode 方法, 当你 Name 类这个对象作为索引,key的时候,就要用到 hashCode
        }
    
        public int compareTo(Object o) {
            Name n = (Name) o;
            int lastCmp = lastName.compareTo(n.lastName); // 调用 String 的 compareTo 方法
            return (lastCmp != 0 ? lastCmp : firstName.compareTo(n.firstName));
        }
    
    }
    
    HashSet
    package com.qunar.basicJava.javase.p13_ClassCollection;
    
    import java.util.HashSet;
    import java.util.Set;
    
    /**
     * Author: libin.chen@qunar.com  Date: 14-6-9 19:30
     *
     * HashSet 知识点, 采用散列的存储方式,所有没有顺序,直接 println(HashSet) : 调用的 toString()
     */
    public class HashSetDemo01 {
        public static void main(String[] args) {
            Set<String> strings = new HashSet<>();
            strings.add("A");
            strings.add("B");
            strings.add("C");
            strings.add("D");
            System.out.println(strings); //
        }
    }
    /**
     * 输出 :
     * [D, A, B, C]
     */
    
    TreeSet
    package com.qunar.basicJava.javase.p13_ClassCollection;
    
    import java.util.Set;
    import java.util.TreeSet;
    
    /**
     * Author: libin.chen@qunar.com  Date: 14-6-9 19:43
     *
     * TreeSet 有序,extends AbstractSet<E> implements SortedSet<E>, Serializable
     */
    public class TreeSetDemo01 {
        public static void main(String[] args) {
            Set<String> strings = new TreeSet<String>();
            strings.add("C");
            strings.add("A");
            strings.add("B");
            System.out.println(strings);
    
        }
    }
    /** 输出 :
     [A, B, C]
     */
    
    Repeat, HashSet
    package com.qunar.basicJava.javase.p13_ClassCollection;
    
    /**
     * Author: libin.chen@qunar.com  Date: 14-6-9 20:45
     */
    class Person {
        private String name;
        private int age;
    
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        @Override
        public boolean equals(Object obj) {
            if (this == obj) return true;
            if (!(obj instanceof Person)) {
                return false;
            }
            Person person = (Person) obj;
            if (this.name.equals(person.name) && this.age == person.age) {
                return true;
            } else return false;
        }
    
        @Override
        public int hashCode() {
            return this.name.hashCode() * this.age;
        }
    
        @Override
        public String toString() {
            return "姓名 : " + this.name + " 年龄 : " + this.age;
        }
    }
    
    package com.qunar.basicJava.javase.p13_ClassCollection;
    
    import java.util.HashSet;
    import java.util.Set;
    
    /**
     * Author: libin.chen@qunar.com  Date: 14-6-9 20:51
     */
    public class RepeatDemo {
        public static void main(String[] args) {
            Set<Person> persons = new HashSet<>();
            persons.add(new Person("张3", 30));
            persons.add(new Person("张4", 28));
            persons.add(new Person("张5", 30));
            persons.add(new Person("张4", 28));
            persons.add(new Person("张7", 30));
            System.out.println(persons);
        }
    }
    

    输出 :

    [姓名 : 张3 年龄 : 30, 姓名 : 张7 年龄 : 30, 姓名 : 张4 年龄 : 28, 姓名 : 张5 年龄 : 30]


  • 相关阅读:
    WinForm多线程+委托防止界面假死
    网页制作知识库
    HTML Agility Pack:簡單好用的快速 HTML Parser
    .NET 4.0 和 .NET 4.0 Client Profile 区别
    使用OPCNetAPI连接OPCServer
    Win7系统删除微软拼音
    Unity3D脚本18:可视化辅助设置类 Gizmos
    mysql 索引
    重启oracle方法一二三
    php7 安装扩展
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786484.html
Copyright © 2020-2023  润新知