zoukankan      html  css  js  c++  java
  • J2SE基础:10集合2

    2:列表(List)


    特点:
    (1):有序的(插入的顺序有序),元素有索引值。

    (2):同意反复。




    set/get/listIterator/subList




    ArrayList


    特点:(1):底层数组方式实现。
         (2):元素是有序的。

    (是指加入进去的元素有序,不是指对象之间的顺序)

         (3):不是线程同步的。

         (4):因为是用数组实现。查找比較快。



    循环:


    迭代器
    For循环


    双向迭代器




    LinkedList


    特点:(1):底层机制链表方式实现。
         (2):元素是有序的。(是指加入进去的元素有序,不是指对象之间的顺序)
         (3):不是线程同步的。
         (4):因为是用链表实现。因此增删改对象比較easy。

    查找比較慢。





    CopyOnWriteArrayList


    特点:(1):底层机制数组方式实现。

         (2):元素是有序的。(是指加入进去的元素有序,不是指对象之间的顺序)
         (3):它是线程同步的。

         (4):因为是用数组实现。因此查找比較快。增删改比較慢。


    List中的subList方法


    subList也会出现高速失败异常。

    解决方法:又一次用subList截取的集合视图构建一个新的List就可以。
    List list = new ArrayList();
    List list2 = list.subList(3,5);
    list.removeAll(list2);



    List list = new ArrayList();
    List list2 = new ArrayList(list.subList(3,5));
    list.removeAll(list2);

    Stack(数据结构)


    (1):有序的(插入的顺序有序)。元素有索引值。
    (2):同意反复。
    (3):数据先进后出。





    3:映射(Map)


    特点:


    (1):键值对的数据对象。键不能反复。(键反复的话。后面加入的覆盖前面)
       一个键相应一个值。


    HashMap


    (1):底层以哈希算法实现
    (2):同意一个NULL键。同意多个NULL值。
    (3):无序
    (4):不是线程同步。


    LinkedHashMap


    (1):底层以链表算法实现
    (2):同意一个NULL键。同意多个NULL值。
    (3):有序(加入的顺序有序)
    (4):不是线程同步。

    存值:put(key,value);

    取值: value = get(key)




    迭代Map




    A:使用KeySet(返回全部键的集合,循环键的集合。取出每个键,再通过键取值)。



    B:使用values(返回全部值的集合),仅仅能获取值(值能够反复,所以不能通过值获取键)

    C:使用entrySet(返回键值对的集合)。

    集合中的每个元素都是一个Map.entry实体对象。








    4:队列(Queue)



    特点:
    (1):与Stack一样,队列是一种数据结构。先进先出的特点。


    加入:offer




    删除:remove




    获取队列元素 poll




    单向队列:Queue queue = new LinkedList();




    双向队列:LinkedList queue = new LinkedList();//这样双向队列能够操作队首与队尾。








    5:老的一些集合框架类


    特点:


    全部都是线程安全的。


    Vector


    特点:(1):底层数组方式实现。


         (2):元素是有序的。(是指加入进去的元素有序,不是指对象之间的顺序)
         (3):是线程同步的。
         (4):因为是用数组实现,查找比較快。





    HashTable


    (1):底层以哈希算法实现
    (2):不同意NULL键,不同意NULL值。
    (3):无序
    (4):线程同步。



    Enumeration


    老的迭代器。

    没有提供remove元素的方法。(因为老集合都是线程安全的).





    集合的工具类:



    Arrays:用于操作数组的工具类。

    对于数组的排序。加入,查找。

    Collections:用于操作集合的工具类。对于集合的排序,加入。查找,比較等。









    集合之间的相互转换


    数组转List

    数组转SET



    List转数组

    Set转数组

    List转SET
  • 相关阅读:
    使用Spring AOP实现业务依赖解耦
    对Java提供的锁机制的一些思考
    关于数据库优化的一些想法
    漫谈使用Kafka作为MQ中间件
    数据库事务隔离引发的关于锁机制的思考
    使用Redis作为高速缓存
    Docker 构建映像
    Centos7 Nginx开机启动
    Docker 设置固定网络IP
    CentOS docker 常用命令
  • 原文地址:https://www.cnblogs.com/llguanli/p/8450097.html
Copyright © 2011-2022 走看看