• 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
  • 相关阅读:
    如何处理前端异常监控?
    【效果】使用canvas rotate实现一个旋转的矩形
    小tips:微信小程序登录后返回登录前的页面继续操作(保留参数)
    nginx的常用配置
    vue-router的History 模式常用的三种配置方式(去掉地址栏中的#号)
    web前端常用的五种方式搭建本地静态html页面服务器
    小tips:nodejs请求接口超时使用中间件connect-timeout实现自动超时机制
    小tips:tomcat下JSP页面引用css、js等资源路径404问题
    原生JavaScript实现一个简单的Promise构造函数示例
    canvas图片旋转扩展出原生JS实现移动端横竖屏手写签名示例
  • 原文地址:https://www.cnblogs.com/xiaoruirui/p/11290925.html
Copyright © 2020-2023  润新知