`

Set 、ArrayList 、 LinkedList 、Vector、Map

    博客分类:
  • java
阅读更多
集合类Collection
List表示有先后顺序的集合,父类为Collection,有add()、get()等方法
Collection有List、Set子类,注意:Map不是Collection的子类
*********************************************************************
ArrayList
ArrayList是用数组的方式存储的,其存储空间要大于实际存储的元素数,便于增加和插入元素,也能够直接按序号索引元素,但是插入元素时涉及到数组元素移动量大的问题,——索引数据块块而插入慢。
*********************************************************************
Vector
Vector是用数组的方式存储的,使用了synchronized方法(线程安全),其他ArrayList一样。
*********************************************************************
ArrayList、Vector和Set的比较
都实现了List接口(List接口是继承Collection接口的),都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于动态的数组,以后可以按位置索引号取出某个元素,并且其中的数据是允许重复的,这是和HashSet之类的最大的不同点,HashSet不可以按索引号去检索其中的元素的,也不允许元素的重复。
*********************************************************************
Map:存放一键值对
HashMap:新的类,异步处理,非线程安全,允许有null
Hashtable:旧的类,同步处理,线程安全,不允许有null
TreeMap:有序排列,按key排序
*********************************************************************
Iterator
迭代输出,依靠Collection接口中的iterator方法输出,是新的输出标准
Enumeration:旧的输出标准
*********************************************************************
LinkedList
LinkedList是用双向链表的方式存储的,按序号索引数据需要进行向前或者向后遍历,但是插入数据时只需记录本项的前后项即可,所以插入块。

*********************************************************************
Set
TreeSet的底层实现是采用红-黑树的数据结构,采用这种结构可以从Set中获取有序的序列,但是前提条件是:元素必须实现Comparable接口,该接口中只用一个方法,就是compareTo()方法。当往Set中插入一个新的元素的时候,首先会遍历Set中已经存在的元素(当然不是采用顺序遍历,具体采用什么方法,建议自己去看看源码),并调用compareTo()方法,根据返回的结果,决定插入位置。进而也就保证了元素的顺序。
Set类拥有add()方法,此方法的返回值有{true &false}
HashSet与TreeSet区别:
1、TreeSet 是二叉树实现的,Treeset中的数据是自动排好序的,不允许放入null值
2、HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束
3、HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例
*********************************************************************
帮助类Collections
Collections类的静态方法:
Collections.sort(); ————————————————> 完成集合的排序工作
实验来验证如下:
       Vector vect = new Vector();                     //定义vect
   for(int i=100;i>0;i--){
    vect.add(i);                           //往里面添加元素
   }
   Vector vect2 = new Vector();
   for(int j=0;j<vect.size();j++){              //得到大小size()
   Object obj = vect.get(j);            //得到具体元素
   if(!vect2.contains(obj)){            //检验是否包含obj元素
    vect2.add(obj);           
   }
   }                                            //到此为止vect2中的元素100 99 98 ~~~顺序
   Collections.sort(vect2);            //排序!!!!此时vect2中的元素顺序为1 2 3 4~~~
   for(int h=0;h<vect2.size();h++){
     System.out.println(vect2.get(h));
   }
*********************************************************************
另:
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
应该从它俩的区别谈起,==是用来判断两者是否是同一对象(同一事物),而equals是用来判断是否引用同一个对象。再看一下Set里面存的是对象,还是对象的引用。根据java的存储机制可知,set里面存放的是对象的引用,所以当两个元素只要满足了equals()时就已经指向同一个对象,也就出现了重复元素。所以应该用equals()来判断。
分享到:
评论

相关推荐

    Java 各种集合的区别ArrayList Vector LinkedList map区别

    今天,我们将深入了解 Java 中的集合类别,包括 ArrayList、Vector、LinkedList 和 Map 等。 ArrayList ArrayList 是一种基于数组的集合类别,它可以存储大量的数据。ArrayList 的特点是:它可以动态地增加或减少...

    List、ArrayList、Vector及map、HashTable、HashMap分别的区别

    List、ArrayList、Vector及map、HashTable、HashMap分别的区别 List、ArrayList、Vector及map、HashTable、HashMap是Java容器类中的几个重要的接口和实现类,了解它们之间的区别是非常重要的。 首先,我们来看List...

    Java容器类List、ArrayList、Vector及map、HashTable应用

    Java容器类List、ArrayList、Vector及map、HashTable应用 List、ArrayList、Vector及map、HashTable是Java中常用的容器类,它们都继承自Collection接口,并提供了不同的实现方式和特点。在实际开发中,选择合适的...

    Java中List、ArrayList、Vector及map、HashTable、HashMap分别的区别.

    ArrayList和LinkedList虽然不是Set,但它们的父接口List属于Collection,而Collection接口有一个子接口Set,例如HashSet是Set接口的一个实现,它内部基于HashMap实现,保证元素唯一性。 7. WeakHashMap WeakHashMap...

    51. ArrayList LinkedList Set HashMap介绍.txt

    ### Vector vs ArrayList #### 区别 - **线程安全性**:`Vector` 是线程安全的,而 `ArrayList` 不是。`Vector` 中的大部分方法都是同步的,可以在不加额外同步措施的情况下用于多线程环境。 - **性能**:由于 `...

    第8讲 对比Vector、ArrayList、LinkedList有何区别1

    在Java集合框架的学习中,除了List接口的实现,还应了解Set接口(如HashSet和TreeSet)和Map接口(如HashMap和TreeMap)等其他容器,以及它们的数据结构和操作特性。同时,关注集合框架的并发支持,如...

    区别和联系-list-map-set-vector

    ### 区别与联系:List、Map、Set、Vector #### List List 是 Java 集合框架中的一个接口,它允许元素重复,并且每个元素都有一个特定的顺序位置。这意味着可以通过索引来访问 List 中的元素。List 提供了多种实现...

    JAVA容器讲解.pdf

    Java容器讲解PPT,Collection Map(HashMap TreeMap LinkedHashMap) List (ArrayList LinkedList Vector) Set (HashSet TreeSet LinkedHashSet)

    List,set,Map 的用法和区别

    实现 List 接口的常用类有 LinkedList、ArrayList、Vector 和 Stack。LinkedList 类实现了 List 接口,允许 null 元素。此外 LinkedList 提供了额外的 get、remove、insert 方法在 LinkedList 的首部或尾部。这些...

    Collection,List,Set和_Map用法和区别

    List 的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 是线程不安全的,Vector 是线程安全的,LinkedList 是线程不安全的,底层是由链表实现的。 Set 是一种无序的集合,元素不能重复,不关心元素的顺序。...

    map,list,set,stack,queue,vector等区别和特点1

    在Java编程语言中,集合框架是处理对象组织和操作的...在多线程环境中,线程安全的实现如Vector和Hashtable是必要的,但在单线程或性能要求较高的情况下,非线程安全的实现如ArrayList、LinkedList和HashMap通常更优。

    java集合类面试题总结

    List 中包括 ArrayList、LinkedList、Vector 等,Set 中包括 HashSet、LinkedHashSet 等,Map 中包括 HashMap、Hashtable 等。 List、Set、Map 是否继承自 Collection 接口 List 和 Set 继承自 Collection 接口,...

    Java集合类List-Set-Map的区别和联系.doc

    List 有三个实现类:ArrayList、LinkedList 和 Vector。ArrayList 是一个动态数组,LinkedList 是一个链表,Vector 是一个线程安全的动态数组。Set 有两个实现类:HashSet 和 TreeSet。HashSet 是一个基于哈希表的...

    List set map集合容器的区别

    根据给定文件的信息,我们可以详细地探讨一下Java中几种主要的集合容器——List、Set以及Map的区别,并且深入了解它们各自的特性和应用场景。 ### 一、List #### 1. ArrayList - **特点**:`ArrayList`是基于动态...

    Java基础部分 Java代码查错算法与编程html&JavaScript&ajax部分面试题

    64、说出ArrayList,Vector, LinkedList的存储性能和特性 2 65、去掉一个Vector集合中重复的元素 2 66、Collection 和 Collections的区别。 2 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==...

    java集合-练习题.pdf

    本篇资源摘要信息主要讲解 Java 集合框架的相关知识点,包括 Collection 接口、List 接口、Set 接口、Map 接口的特点和区别,以及 ArrayList、LinkedList、Vector 等实现类的使用和区别。 一、Collection 接口的...

    java常用集合框架[归类].pdf

    本篇将详细阐述Java常用的集合框架,包括Map、Set和List接口,以及它们的主要实现类,如HashMap、HashSet、ArrayList、LinkedList和Vector。 1. **Map接口**: Map接口是Java集合框架中用于存储键值对的接口,不...

    list,set,map的区别及使用场景1

    如果在多线程环境中使用,应考虑使用其线程安全的替代品,如Vector(ArrayList的线程安全版本)、TreeSet(SortedSet的一个实现,线程安全)以及ConcurrentHashMap(线程安全的Map实现)。 5. 使用场景建议: - 当...

    02-Java集合容器面试题-重点.docx

    Java集合容器概述、集合框架、List、Set、Map接口、Iterator、ArrayList、LinkedList、Vector、HashSet、HashMap、Queue、BlockingQueue、ConcurrentHashMap等。 Java 集合容器概述 Java 集合容器是用于存储数据...

    list map set区别

    - **Vector**:在多线程环境下使用 Vector 可以避免同步问题,但在单线程或已经实现了外部同步的情况下,应优先考虑 ArrayList 或 LinkedList 以提高性能。 #### 2. Map 的应用场景 - **HashMap**:在大多数情况下...

Global site tag (gtag.js) - Google Analytics