zoukankan      html  css  js  c++  java
  • Java基础知识(JAVA集合框架之List与Set)

    List和Set概述
    数组必须存放同一种元素。
    StringBuffer必须转换成字符串才能使用,如果想拿出单独的一个元素几乎不可能。
    数据有很多使用对象存,对象有很多,使用集合存。

    集合容器因为内部的数据结构不同有多种具体容器,不断的向上抽取就形成了集合框架。
    框架的顶层就是Collection接口。


    List:列表。元素可以重复,有序(存入和取出有特定的顺序)。List下有三个类比较常用:Vector、ArrayList、LinkedList。

    Vector类。
    Vector类自JDK1.0就出现了,它可以说是集合框架的元老级干部。集合框架自JDK2.0出现以后,Vector类就加入了集合框架的队伍并归入了List旗下。Vector类的最大特点就是线程安全,这在整个集合框架中都是少见的。正是因为线程安全,所以执行效率低下,到了现在几乎已经废弃。即使在多线程编程中也不会使用它,而是使用ArrayList加锁代替。Vector内部是一个数组结构,并且是可增长的,步长为100%。Vector增删查询都很慢。

    ArrayList类。
    ArrayList类是为了替代Vector类而出现的,所以它的功能几乎和Vector类完全相同,但它是非同步的。ArrayList内部也维护了一个变长的数组,增长的步长为50%,查询速度很快。

    LinkedList类。
    LinkedList是List接口链接列表实现。也就是说我们说的链表。LinkedList最大的特点就是增删速度非常快。

    LinkedList类概述。
    LinkedList底层是链表数据结构,这就导致了它的内容在内存中并不是连续的。这也使得它增删速度快而查询速度慢。注意,LinkedList中存储的都是对象的地址,即引用,而非对象本身

    ArrayList类概述。
    ArrayList和Vector类几乎相同,略。
    但需要注意的是,ArrayList中存储的是对象的引用,即地址,而非对象本身。如果ArrayList容器发生了al.add(3);这种情况,但是编译器并没有报错,不能认为是集合中可以存储基本数据类型,事实上在这个过程中发生了两件事:自动装箱以及上转型。这和Object obj=3;有着异曲同工之妙。

    方法。略。
    注意,虽然ArrayList略掉很多,但并不是说它不重要,只是因为方法中和List接口中的差不多,所以就不做介绍了。实际上在开发中最常使用的类就是ArrayList。

    7.LinkedList和ArrayList都有get方法,有什么区别?
    两者虽然都是List的子类,但是ArrayList的底层是数组数据结构,在内存中是连续的,所以使用get方法并不用从头开始查找;但是LinkedList底层是链表数据结构,即使使用了get方法,但是仍然需要从头开始查找。

    Set:集合。元素不允许重复,无序(有时候有序,特别是经过特殊处理的时候比如在TreeSet中更是如此)。
    一、Set概述。
    Set集合的特点是元素不允许重复,而且是无序的(添加和取出的顺序不一致)。
    Set接口中的方法和Collection接口中的方法几乎相同,略。
    Set接口下常用的两个类:HashSet、TreeSet。

    Collection
     -> Set 无序不重复 -> 无序HashSet,需要排序TreeSet
     -> List 有序可重复 -> 查,改ArrayList,增删LinkedList

    List为列表,中在列表中的对象是由顺序的排序的,并且是有重复的对象。
    简单为:有序,有重复。

    Set为集合,在集合中的对象是不按照顺序排列的,并且是没有重复的对象的。
    简单为:无序,无重复。

    Set为无序集合,无序无重复;
    List为有序集合,有序有重复;

    Set                                          Map                                 算法
    --------------------------------------------------------------------------
    HashSet                                HashMap                        哈希表
    TreeSet                                 TreeMap                          红黑树
    LinkedHashSet                     LinkedHashMap             哈希表/链表
    ---------------------
    作者:西门吹雪叶孤城
    来源:CSDN
    原文:https://blog.csdn.net/yangying496875002/article/details/73729290
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    HDU3480-Division-斜率dp
    CDQ题目套路总结 [未完成]
    HDU5773-The All-purpose Zero-多校#41010-最长上升子序列问题
    POJ2763-Housewife Wind-树上单点修改区间求和
    HDU3507-Print Article-斜率dp入门题
    POJ2187-Beauty Contest-凸包
    SPOJ QTREE-Query on a tree-树链剖分-边权
    扫描系统进程和获取某进程的PID
    ConfuserEx壳
    关于Intel漏洞的学习
  • 原文地址:https://www.cnblogs.com/sxjblogs/p/9868160.html
Copyright © 2011-2022 走看看