java-se-集合之List

List:列表
        此接口对应的实现类的特点都是:有序的、可重复的(重复与否与元素的equals()方法有关)
        常用方法:
            void   add(int index, E element)                            将元素element插入此集合的index处
            E   get(index)                                                       返回指定下标的元素
            E   set(int index, E element)                                 替换指定下标的元素
            int   indexOf(obj)                                                  返回obj第一次出现的下标,没有出现返回-1
            boolean   remove(int index)                                  移除此集合中下标为index的元素
            List<E>   subList(int fromIndex,int endIndex)       截取此集合中的一部分,从fromIndex开始到endIndex 包前不包后
                ps:此方法在堆中产生了一个内部类SubList集合对象,此集合对象指向引用的是父集的一部分,修改子集,会影响父集
            int   lastIndexOf(Object obj)                                  返回此集合中指定元素obj最后一次出现的下标,找不到则返回-1
        数组与集合之间的转换:
            1、集合转数组
                Object    toArray()
                E[]    toArray(E[] e)
            2、数组转集合
                List    Arrays.asList(数组参数)
                    ps:数组转成的集合不能进行增删操作,否则会出现运行时异常java.lang.UnsupportedOperationException
                        可以修改,会影响数组内容。可以将元素存入新的数组中进行增删操
        List的三个实现类:
            (1)ArrayList:底层是基于动态数组的数据结构,是有存放顺序的
            (2)LinkedList:底层是基于双链表的数据结构,每一个存储单元都涉及到其他两个引用
                优缺点:执行get()/set()方法时,ArrayList的效率高,LinkedList的效率低
                          在增加/删除操作时,LinkedList效率高,ArrayList效率低
            (3)Vector:是一个比较古老的集合,线程安全,效率特别低,不建议使用

        List排序:
                Comparable接口:
                        在定义元素类型时实现Comparable接口,实现接口内的compareTo(E e),实现对象之间可以进行比较
                        方法:
                               int    compareTo(E e)    
                        比较规则:
                               (1)this与e比较,this-e如果大于0,返回一个大于0的数,按照升序排序
                                       如果等于0,返回0
                                       如果小于0,返回一个小于0的数
                                (2)e-this,降序排序
                        工具类Collections:
                                sort(Collection c)        对集合里的元素进行排序
                Comparator比较器接口:    
                        当元素类型已经实现了Comparable接口,定义了默认比较规则,想要换其他比较规则,可以利用比较器接口来重新定义比较规则
                        方法:
                               int    compare(E o1,E o2)
                        比较规则:
                                (1)o1与o2比较,o1-o2如果大于0,返回一个大于0的数,按照升序排序
                                       如果等于0,返回0
                                       如果小于0,返回一个小于0的数
                                (2)o2-o1降序排序

猜你喜欢

转载自blog.csdn.net/qq_38741415/article/details/82630328