Java那些事儿

Java集合框架2

2017-09-11  本文已影响0人  文艺小年青
Set集合
        //Set   (无序的)  list 是有序的
        //set  不能重复的
        //HashSet   treeSet
        
        HashSet set = new HashSet();   //创建一个hashset对象
        set.add("1");                   //添加元素
        set.add("2");
        System.out.println(set);
        //遍历set
        for (Object object : set) {
            System.out.println(object);
        }
        
        //是否包含
        boolean iscon = set.contains("1");
        System.out.println(iscon);
        
        //删除   (不可以通过下标删除,只能通过传入的元素去删除)
        set.remove("1");
HashSet
//重复元素的判断机制
    //只要obj == obj1  认为 obj和obj1  是相同的元素
    //equal 与hashcode  同时相等的时候,认为相同的元素
    public static void main(String[] args) {
        
        //hashSet  基于HashMap实现的,利用了HashMap键不能重复的特点
        
        HashSet set = new HashSet();
        Person person = new Person();
        person.name = "张三";
        
        Person person2 = new Person();
        person2.name = "李四";
        
        Person person3 = new Person();
        person3.name = "王五";
        
        Person person4 = new Person();
        person4.name = "张三";
        System.out.println(person.equals(person4));
        
        set.add(person);
        set.add(person2);
        set.add(person3);
        set.add(person4);
        System.out.println(set);
        
    }
    
}

class Person implements Comparable{
    String name;
    int age;
    //重写的方法都是继承于object
    @Override
    public String toString() {     //自定义输出
        return "name = " + this.name + "age = " + this.age;
    }
    
    @Override
    public boolean equals(Object obj) {
        //如果类型不相等,返回false
        if (!(obj instanceof Person)) {
            return false;
        }
        //如果名字相同,返回true
        if (((Person)obj).name.equals(this.name)) {
            return true;
        }
        //如果名字不相同   返回false
        return false;
    }
    
    //hascode
    
    @Override
    public int hashCode() {    //计算一个对象的哈希值
        return this.name.hashCode();
    }

    //实现comparable接口方法
    @Override
    public int compareTo(Object o) {
        if (o instanceof Person) {
            Person p = (Person)o;
            if (this.age > p.age) {
                return 1;
            }else if (this.age == p.age) {
                return 0;
            }else {
                return -1;
            }
            
        }
        
        return 0;
    }
}
TreeSet
//Set--- TreeSet   可以排序                  1,自然排序   2,自定义排序
    //TreeSet可以对数字和字符串进行排序,
    //因为实现了Comparable接口
    //如果在comparable接口中返回0  认为是同一个元素
    public static void main(String[] args) {
        
        TreeSet set = new TreeSet();
        //放的是interger类型
//      set.add("2");
//      set.add("3");
//      set.add("1");
//      set.add("4");
        
        Person p1 = new Person();
        p1.age = 12;
        p1.name = "张三";
        
        Person p2 = new Person();
        p2.age = 13;
        p2.name = "张四";
        
        Person p3 = new Person();
        p3.age = 10;
        p3.name = "张无";
        
        Person p4 = new Person();
        p4.age = 14;
        p4.name = "张六";
        
        set.add(p1);
        set.add(p2);
        set.add(p3);
        set.add(p4);
        
        System.out.println(set);
    }
    
}

上一篇下一篇

猜你喜欢

热点阅读