Java集合框架2

作者: 文艺小年青 | 来源:发表于2017-09-11 21:36 被阅读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);
        }
        
    }
    
    

    相关文章

      网友评论

        本文标题:Java集合框架2

        本文链接:https://www.haomeiwen.com/subject/ilfqsxtx.html