zoukankan      html  css  js  c++  java
  • List&&Set

    List

    是一个接口实现可重复有序的存储,有ArrayList和Linked List两种实现类中使用的方法为add()list.iterrator获得迭代器,通过迭代器进行遍历

    区别在于数组和链表的区别

    数组查询容易,增加和删除难,

    链表增删容易,查询需要遍历;

    Set

    一个不可重复无序的存储方式,也是常用方法为add和list.iterrator获得迭代器来遍历

    hashSet底层为hashmap当我们判断是否为相同值的时候需要同时覆写hashcode和equals方法

    TreeSet判断重复为自然排序和定制排序(类似于中介者模式)

    自然排序为实现comparable接口实现comparaTO方法的返回值如果为0就不可重复,如果为1或者-1为可重复

    package cn.jiedada.TreeSet;
    
    import java.util.Comparator;
    import java.util.TreeSet;
    
    public class Test {
        /*也是Set的实现类
         * 不可重复的无序存储
         * 遍历方法
         * 不可重复的实现
         * 自然排序compareTo和定制排序Comparable这个接口
         * 定制排序
         * */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            TreeSet treeSet = new TreeSet();
            Teacher teacher1 = new Teacher("李老师", 42);
            Teacher teacher2 = new Teacher("李老师", 42);
            //在添加的时候只能添加同一类的实列
        /*    Exception in thread "main" java.lang.ClassCastException: 
                cn.jiedada.TreeSet.Teacher cannot be cast to java.lang.Comparable*/
            treeSet.add(teacher1);
            treeSet.add(teacher2);
            /*Exception in thread "main" java.lang.ClassCastException: 
             * cn.jiedada.TreeSet.Teacher cannot be cast to java.lang.Integer*/
            //treeSet.add(1);
            System.out.println(treeSet);
            /*TreeSet(Comparator<? super E> comparator) */
        
        }
    
    }
    class Teacher implements Comparable{
        String name;
        Integer age;
        public Teacher(String name, Integer age) {
            super();
            this.name = name;
            this.age = age;
        }
        @Override
        public int compareTo(Object o) {
            // TODO Auto-generated method stub
            return 0;
        }
        @Override
        public String toString() {
            return "Teacher [name=" + name + ", age=" + age + "]";
        }
        
    }
    View Code

    定制排序为compartor接口我们可以为我们自己指定的规则判断是否重复

    package cn.jiedada.TreeSet;
    
    import java.util.Comparator;
    import java.util.TreeSet;
    
    public class Test1 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            TreeSet treeSet=new TreeSet(new Comparator() {
    
                @Override
                public int compare(Object o1, Object o2) {
                    Student student1=(Student)o1;
                    Student student2=(Student)o2;
                    return student1.age.compareTo(student2.age);
                }
            });
            Student student = new Student("李鹏", 18);
            Student student2 = new Student("小张", 18);
            treeSet.add(student);
            treeSet.add(student2);
            System.out.println(treeSet);
        }
    
    }
    class Student{
        String name;
        Integer age;
        public Student(String name, Integer age) {
            super();
            this.name = name;
            this.age = age;
        }
        
    }
    View Code
  • 相关阅读:
    使用Subversion进行版本控制 针对 Subversion 1.4(根据r2866编译)-------<转载>这是重要的知识点
    UIImageView上添加Button不能响应点击事件[转]
    Unity3D基础学习篇Unity基本原理
    ObjectiveC基础知识-查漏补缺
    C# 参考之方法参数关键字:params、ref及out
    SQL SERVER 2000 创建挂起的文件操作 解决方法
    JavaScript trim函数大赏
    javascript的date对象的方法
    firefox getRangeAt
    ckeditor+ckfinder
  • 原文地址:https://www.cnblogs.com/xiaoruirui/p/11290925.html
Copyright © 2011-2022 走看看