Collection集合中各子集合的差别

一.HashMap和HashTable的差别

 1.HashMap能允许一个null key和多个null value值;HashTable不允许为null;

 2.HashMap不同步非安全;HashTable是同步的,线程安全。

 3.两者加载因子都是0.75;但是扩容增量存在差别;HashMap为1倍,HashTable为2倍+1;

二.ArrayList、Vector、LinkedList差别 

  1.ArrayList与Vector的差别

    底层都是数组结构;

    Vector扩容是2倍;ArrayList是1.5倍;(Vector每次请求其大小的双倍空间,而ArrayList每次对size增长50%)

    Vector是线程安全的,ArrayList非线程安全;

  1.同步性(Synchronization):
      Vector中的public方法多数添加了synchronized关键字、以确保方法同步、也即是Vector线程安全、ArrayList线程不安全。
    2.扩容(Resize):
      ArrayList以1.5倍的方式在扩容、Vector 当扩容容量增量大于0时、新数组长度为原数组长度+扩容容量增量、否则新数组长度为原数组长度的2倍。
    3.性能(Performance):
      由于第一点的原因、在性能方便通常情况下ArrayList的性能更好、而Vector存在synchronized 的锁等待情况、需要等待释放锁这个过程、所以性能相对较差。
    4.快速失败(fail-fast):
      Vector 的 elements 方法返回的 Enumeration 不是 快速失败(fail-fast)的。而ArrayList是快速失败(fail-fast)

  2.ArrayList与LinkedList差别

   ArrayList按数组结构进行存储;含有索引,查询快;

   LinkedList按链表结构进行存储;增删快;

   ArrayList:

底层数据结构是数组,查询快,增删慢线程不安全,效率高

Vector:

底层数据结构是数组,查询快,增删慢线程安全,效率低

LinkedList:

底层数据结构是链表,查询慢,增删快线程不安全,效率高

三.Collections和Collection差别

  Collection是集合的父类,上级父类为Iterator;包含List集合和Set集合的子类;

  Collections是Collection的工具类;提供了常用的集合静态方法;

  

四、LinkedHashSet 

  底层数据结构由哈希表和链表组成;哈希表保证元素的唯一性;链表保证元素有素;

五、更多参考

http://blog.csdn.net/lzhifang006/article/details/44600347

http://skyuck.iteye.com/blog/526358

原文地址:https://www.cnblogs.com/fangr-blue/p/8215436.html

时间: 2024-10-17 18:09:18

Collection集合中各子集合的差别的相关文章

泛型限定的练习。获取Collection集合中的最大值

/** *    泛型限定的练习.★★★★★ 获取Collection集合中的最大值.(解决问题按照一下的要求做) 1 先定义了一个方法中明确具体元素类型的getMax_1. 2 由于getMax_1无法获取其他类型元素的最大值.提高扩展性,操作所有对象. 就升级为了Object .getMax_2 3 因为定义成Object,什么类型都可以接收,容易出现运行时的ClassCastException 所以使用泛型,对要操作的元素进行类型的限定. 思路: 1.获取元素最大值的方法,通常是拿一个对象

java.util.Map按照key值合并的value的Collection 集合中。

用java实现把多个map的内容合并的一个resultMap中 代码大致如下 /** * @author Shalf */ public class MapUtil { /** * 把partMap数据合并放到resultMap中. * @param resultMap * @param partMap */ public static <T, F, K extends Collection<F>> void merge2ResultMap(Map<T, K> resu

遍历Collection集合中的6种方法:

下面的代码演示了遍历Collection集合的6种方法,注意Collection集合的遍历远不止于增强for循环,和迭代器两种. 代码如下: 1 package com.qls.traverse; 2 3 import java.util.ArrayList; 4 import java.util.Arrays; 5 import java.util.Collections; 6 import java.util.Enumeration; 7 import java.util.Iterator;

Java Collection集合中的iterator方法

Iterator接口的概述 /** * java.util.Iterator接口:选代器(对集合进行遍历) * 有两个常用的方法 * boolean hasNext() * 如果仍有元素可以迭代,则返回true. * 即判断集合中还有没有下ー个元素,有就返回true,没有就返回 false * E next() * 返回送代的下一个元素. * 即取出集合中的下一个元素 * iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象. * 获取实现类的方式比较特

Collection集合中的List常用实现类跟方法

简述一下我对List的一个认识,理解的不是很深刻,所以没有涉及原理性的东西,主要用于自己今后的知识梳理回顾,当然如果能帮到大家就更好了. List一个位于Util包中的接口,其常用实现类ArrayList,LinkedList.ArrayList基于数组编写,LinkedList基于链表编写,这里只说List接口的方法,所以就以ArrayList为例,就不介绍子类自有的特性了,话不多说直接上代码. 1 import java.util.ArrayList; 2 import java.util.

阶段1 语言基础+高级_1-3-Java语言高级_04-集合_01 Collection集合_4_Iterator接口介绍

collection集合中是没有索引的,不能使用普通的循环来便利它. 也是在util的包中 先判断集合中有没有元素 有元素就取出来,用next方法 使用接口来接受一个实现类,这就是多态 原文地址:https://www.cnblogs.com/wangjunwei/p/11231051.html

collection集合--Map

Map(键值对.键唯一.值不唯一) 核心: Map集合中存储的是键值对,键不能重复,值可以重复.根据键得到值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值. l  Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储. l  Map中的集合,元素是成对存在的(理解为夫妻).每个元素由键与值两部分组成,通过键可以找对所对应的值. l  Collection中的集合称为单列集合,Map中的集合称为双列集合. l  需要注

拆分集合为相等的子集合(第1届第1题)

题目要求 问题描述:将1到N的连续整数组成的集合划分为两个子集合,且保证每个集合的数字和相等.例如,对于N=4,对应的集合{1,2,3,4},能被划分为{1,4}.{2,3}两个集合,使得1+4=2+3,且划分方案只有此一种.编程实现给定任一正整数N(1<=N<=39),输出其符合题意的划分方案数. 样例输入1:3 样例输出1:1    (可划分为{1,2}.{3}) 样例输入2:4 样例输出2:1    (可划分为{1,3}.{2,4}) 样例输入3:7 样例输出3:4    (可划分为{1

Collection单列集合中的常用实现类

Collection 集合层次的根接口 List 有序 有索引 可以重复 ArrayList 底层数据结构是数组 查询快 增删快 线程不安全 效率高 LinkedList 底层数据结构是链表 查询慢 增删快 线程不安全 效率高 Vector 底层数据是数组 查询和增删介于前两者之间 线程安全 效率低 Set 唯一 在调用add()方法时: 在底层中以map的形式存储,存储时调用元素的hashCode(),equals(),map会自动比较key值(就是hash值) 先比较hash值 如果对象的h