zoukankan      html  css  js  c++  java
  • 【JAVA SE基础篇】41.Collection、List方法和ArrayList、LinkedList、Vector底层实现

    1.Collection中的方法

    Collection表示一组对象,他是集中、收集的意思。Collection接口有两个子接口List和Set接口

    Cooleantion中的方法:

    1.boolean add(Object element):增加元素到容器

    2.boolean remove(Object element):从容其中删除元素

    3.boolean contains(Object element):容器中是否包含该元素

    4.int size():容器中元素的数量

    5.boolean isEmpty():容器是否为空

    6.void clear():清空容器中所有元素

    7.Iterator iterator():获得迭代器,用于遍历所有元素

    8.boolean containsAll(Collection c):本容器是否包含C容器中的所有元素

    9.boolean addAll(Collection c):将容器C中所有元素增加到本容器

    10.boolean remove(Collection c):移除本容器和容器C中都包含的元素

    11.boolean retainAll(Collection c):取本容器和容器C中都包含的元素,移除非交集元素

    12.Object[] toArray() :转化成Object数组

    例(基本方法):

    例(数学集合相关的方法):

    2.List

    List是有序、可重复的容器。

    有序:List中的每个元素都有索引标记。可以根据元素的索引标记(在List中的位置)访问元素,从而精确控制这些元素。

    可重复:List允许加入重复的元素。更确切地讲,List通常允许满足e1.equals(e2)的元素重复加入容器

    List接口常用的实现类有3个:ArrayList、LinkedList和Vector。

    List除了可以使用Collection接口的方法,List多了一些跟顺序(索引)相关的方法:

    1.void add(int index,Object element):在指定位置插入元素,以前的元素全部后移

    2.Object set(int index,Object element):修改指定位置的元素

    3.Object get(int index):返回指定位置的元素

    4.Object remove(int index):删除指定位置的元素,后面元素全部前移一位

    5.int indexOf(Object o):返回第一个匹配元素的索引,如果没有该元素,返回-1

    6.int lastIndexOf(Object o):返回最后一个匹配的元素的索引,如果没有该元素,返回-1

    例:

    3.ArrayList的底层实现

    ArrayList底层是用数组实现的存储,特点:查询效率高,增删改效率低,线程不安全(Vevtor安全),比较常用。

    数组长度有限,而ArrayList是可以存放任意数量的对象,长度不受限制,是怎么实现的呢?

    使用数组的扩容。当数组长度不够了,默认定义一个原先的数组1/2大小的数组(10变成15)。再将原数组内容拷贝至新数组,无限循环。

    4.LinkedList的底层实现

     LinkedList底层是双向链表实现存储的。特点:查询效率低,增删改效率高,线程不安全。

    双向链表也叫双链表,是链表的一种,他的每个数据节点都有两个指针,分别指向前一个节点和后一个节点。

    所以,从双向链表中的中的任意节点开始,都可以很方便的找到所有节点

     5.Vector的底层实现

    Vector的底层实现还是数组,相关的方法都加入同步检查,因此线程安全,效率低。

    比如indexOf方法就加入了synchronized同步标记

    public synchronized int indexOf (Object o,int index){

      //略

    }

    6.如何选用ArrayList、LinkedList、Vector?

    1.需要线程安全时,使用Vector。

    2.不存在线程安全时,并在查找时多用ArrayList(常用)

    3.不存在线程安全时,增加和删除元素多用LinkedList。

  • 相关阅读:
    关于body添加position:fixed会返回到网页顶部的问题
    微信个人信息的接口
    无缝滚动+定时器
    判断各种浏览器的内核和 移动端的类型
    laery.js提示层结束之后自动跳转到新页面
    支持火狐的文本超出隐藏以省略号显示
    多个列表同时进行倒计时
    记录制作人生第一把分体式键盘 ^.^
    NoSQLBooster for mac 破解(win同理)
    手机对应归属地规则
  • 原文地址:https://www.cnblogs.com/chengkuan/p/13203206.html
Copyright © 2011-2022 走看看