zoukankan      html  css  js  c++  java
  • Java集合---List、Set、Iterator、Map简介

    1、List集合

    1.1概念

    List继承自Collection接口。List是一种有序集合,List中的元素可以根据索引(顺序号:元素在集合中处于的位置信息)进行取得/删除/插入操作。

    跟Set集合不同的是,List允许有重复元素。对于满足e1.equals(e2)条件的e1与e2对象元素,可以同时存在于List集合中。当然,也有List的实现类不允许重复元素的存在。同时,List还提供一个listIterator()方法,返回一个ListIterator接口对象,和Iterator接口相比,ListIterator添加元素的添加,删除,和设定等方法,还能向前或向后遍历,具体的方法往下看。List接口的实现类主要有ArrayList,LinkedList,Vector,Stack等。

    1.2 ArrayList类

    ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
    每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。

    1.2.1 ArrayList与Vector的区别

      ArrayList Vector
    性能   采用异步处理方式,性能高   采用同步处理方式,性能低
    线程安全   非线程安全   线程安全,需要线程安全时使用

    1.2.2 主要方法

    • public boolean add(Object?o):添加元素
    • public void add(int index, Object element):在指定位置添加元素
    • public Iterator iterator():取得Iterator对象便于遍历所有元素
    • public Object get(int?index):根据索引获取指定位置的元素
    • public Object set(int index,Object element):替换掉指定位置的元素

    1.2.3 排序方法

    • Collections.sort(List list):对List的元素进行自然排序
    • Collections.sort(List list, Comparator comparator):对List中的元素进行客户化排序 

    1.3 LinkedList类

         LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
        注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
    List list = Collections.synchronizedList(new LinkedList(...));

    2、Set集合

    Set接口中不能加入重复元素,但是可以排序。

    Set接口常用子类

             散列排序:HashSet,不能排序,存入便打乱数据

             有序排序:TreeSet,可以排序,存入便自动排序

    3、Iterator(迭代器)

    集合输出的标准操作。标准做法,使用iterator

    3.1 操作原理

    Iterator是专门的迭代输出接口,迭代输出就是想元素一个个进行判断,判断其是否有内容,如果有内容则把内容取出

    使用方法:Iterator iter = list.iterator();

    注:iterator使用remove时,不能通过list等集合删除元素

    4、Map

    4.1 常用方法

    map.contains(“key”)判断key是否存在

    map.containsValue(“值”)判断值是否存在

    map.keySet();获取所有key的集合:Set集合

    map.values();获取所有值的集合:Collection集合

  • 相关阅读:
    技术债务墙:一种让技术债务可见并可协商的方法
    墙裂推荐
    shell 脚本通过Webhook 发送消息到微信群
    关于中医的一段对话 [ZZ] -- 思维训练故事
    应用深度神经网络预测学生期末成绩
    Python中的模块引用机制
    批量修改含空格的文件名「Linux」
    Markdown数学公式语法
    批处理修改IP
    FTD团队目录
  • 原文地址:https://www.cnblogs.com/xiaobaizhiqian/p/7640045.html
Copyright © 2011-2022 走看看