`
ssydxa219
  • 浏览: 622284 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

集合的区别总结

 
阅读更多

hashMaphashTable的几点区别

1.       继承父类不同

HashTable继承的是DictionaryHashMap继承的是AbstractMap类。

2.       是否同步

HashTable线程安全的,HashMap线程不安全的Map Collections.synchronizedMap(Map m)

3.       Key value是否可为null

HashTablekeyvalue都不能为空,HashMapputnull,null)。Key相同value

4.       Hash值不相同

HashTable就直接是key.hashCode()HashMaphashhash(key.hashCode())

5.       遍历方式不同

HashTableenumerationHashMap   Iterator

6.       数组默认大小

HashTable11 增为2x+1HashMap16 增为2的指数。

7.       相同方法的功能

HashTablecontains(Object value)=====HashMapcontainsValue(Object value)

 

 

HashMap的实现原理:

Map<String, String> map = new HashMap<String, String>(); map.put(“1”,”1”);

1. new一个HashMap时,会创建一个Entry[] table,它就是用来存储Map的每一个key-value对。table的初始大少为16

2. 当进行put操作时,首先根据key来计算hash值,如果keynull,它的hash值会设为0,根据这个hash值在来计算它的table中的位置。Entry<K,V> e = table[i],如果enull,就说明这个key是一个新值,就进行addEntry方法,将这对key-value放入Entry,再将这个Entry放入table中;如果e不为null,就会更新value,将之前的value覆盖。

还有一个问题。当计算出的table的索引大于table的长度。Tablesize*2,也就是说tablesize永远是2的倍数。

HashMap可以看作三个视图:keySetvalueCollectionEntrySet。 这里HashSet就是其实就是HashMap的一个视图。HashSet内部就是使用Hashmap实现的,和Hashmap不同的是它不需要KeyValue两个值。

 

 

 

 

 

 

 

 

 

 

ArrayListLinkedList区别

1.  数据结构

ArrayList是实现了基于动态数组,LinkedList基于链表。

2.  随机访问

ArrayList getset优于LinkedList要移动指针。

3.  新增和删除操作

LinedList addremove优于ArrayList要移动数据。

各自所适用的地方,总的说来可以描述如下:
1.添加的元素的位置

列表末尾:增加一个元素所花的开销都是固定的。

数组中增加一项:ArrayList指向所添加的元素,可能对数组重新进行分配;                                                          LinkedList开销是统一的,分配一个内部Entry对象。

中间插入或删除一个元素:ArrayList剩余的元素都会被移动;LinkedList的中间插入或删除一个元素的开销是固定的。
3LinkedList不支持高效的随机元素访问。
4ArrayList的空间浪费在list列表的结尾预留一定的容量空间,

   LinkedList的空间花费在它的每一个元素都需要消耗相当的空间


可以这样说:随机地访问时,ArrayList会提供比较好的性能;中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。

分享到:
评论

相关推荐

    java中集合类的区别

    ### Java中集合类的区别 #### 一、ArrayList与Vector **ArrayList** 和 **Vector** 都是实现了 **List** 接口的动态数组实现。它们的主要区别在于线程安全性和性能方面。 - **ArrayList**: 不是线程安全的,因此...

    java集合Collection总结

    10. **集合与数组的区别**:集合是对象的集合,可以动态调整大小,而数组的大小是固定的。集合提供了更丰富的操作,如排序、过滤等,而数组操作相对简单。 以上只是Java集合框架中Collection接口及其相关子接口和...

    数组与集合的几个区别(五个)

    ### 数组与集合的几个区别(五个) #### 引言 在编程中,数组和集合都是非常重要的数据结构,用于存储一组相关的数据项。虽然它们在功能上有一定的相似性,但其实现方式、性能特点以及使用场景都有所不同。本文将...

    java集合类面试题总结

    Java 集合类面试题总结 Java 集合类是 Java 语言中的一种重要组件,用于存储和操作数据。下面总结了 Java 集合类的一些常见问题和答案。 HashMap 和 Hashtable 的区别 HashMap 和 Hashtable 都是 Java 中的散列表...

    Java集合总结.txt

    集合和数组的区别: 1.集合是大小可变的序列,数组在声明后,长度不可变 2.数组只能存放声明时指定的一种数据类型,集合可变存放多种数据类型 3.数组可以存放基本数据类型,集合只能存放对象 ps:要想往集合中...

    Java集合专题总结:HashMap 和 HashTable 源码学习和面试总结

    Java集合专题总结:HashMap和HashTable源码学习和面试总结 本文总结了Java集合专题中的HashMap和HashTable,涵盖了它们的源码学习和面试总结。HashMap是一种基于哈希表的集合类,它的存储结构是一个数组,每个元素...

    集合总结及扩展2

    本文主要对集合进行了总结,并扩展了一些核心概念。 首先,集合继承体系体现了面向对象的设计思想。接口在集合框架中扮演着定义功能标准的角色,例如`Collection`接口定义了集合的基本操作。抽象类如`...

    数学集合知识点总结.docx

    ### 数学集合知识点总结 #### 一、知识归纳 ##### 1. 集合的有关概念 **1) 集合与元素** - **集合(集)**:某些特定对象组成的整体称为集合。集合中的每个对象称为元素。 - **注意事项**: - 集合与集合的元素是...

    关于android集合的相关总结

    ### 关于Android集合的相关总结 在Java编程语言中,集合框架是进行数据处理与管理的基础工具之一。集合框架主要包括四种核心类型:`Set`、`List`、`Map`以及`Queue`等。本文主要围绕`Set`、`List`、`Map`这三种集合...

    List set map集合容器的区别

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

    集合总结.docx

    本文主要探讨了集合的两个重要子接口——List和Set的区别,以及解决哈希冲突的四种方法。 首先,让我们来理解一下Collection接口。Collection是所有单列集合的根接口,它定义了通用的操作集合的方法。Collection有...

    corejava集合框架学习总结.pdf

    ### 核心Java集合框架学习总结 #### 一、概述 在Java编程语言中,集合框架是一组用于存储和操作对象的接口和类。这些接口和类提供了多种数据组织方式,如列表、集合并和映射等。本篇文章将重点介绍集合框架中的几...

    java集合框架详解以及区别

    总结来说,Java集合框架提供了丰富的数据结构选择,根据实际需求,如是否需要排序、是否关心元素顺序、是否需要线程安全、性能要求等,可以选择最合适的实现。理解这些接口和类的区别,能够帮助开发者编写更高效、更...

    java面试题集合与总结

    ### Java面试题集合与总结 #### 一、面向对象四大特性 **1. 抽象** - **定义**: 抽象是指在编程中提取事物的关键属性和行为,忽略不相关细节的过程。它允许开发者专注于核心功能,从而简化复杂度。 - **作用**: ...

    Java 集合与数组

    数组与集合的区别 数组和集合都是用于存储和管理数据的数据结构,但是它们有着不同的特点: * 数组的长度是固定的,一旦创建便不能改变,而集合的大小可以动态变化。 * 数组中的元素可以是基本类型,也可以是对象...

    java集合总结.docx

    最后,关于HashMap和HashTable,除了线程安全性和null值支持的区别外,它们都是基于哈希表实现的Map,但HashMap更适合于单线程环境,而HashTable适合于多线程环境。 了解这些基本概念和关系后,开发者可以根据实际...

    集合幂级数的性质与应用及其快速算法

    总结来说,集合幂级数及其快速算法提供了一种在组合数学和算法设计中处理集合运算的新方法。通过深入理解集合的基本性质,并将这些性质融入到幂级数的概念中,可以构建出在理论和应用中都有重要价值的新工具。这不仅...

    java集合详解与总结.pdf

    Java集合框架是Java编程语言中不可或缺的一部分,它提供了用于存储和管理对象的容器。在Java中,集合主要分为三大类:Collection、List和Map,它们位于`java.util`包下。这些集合接口和实现类构成了Java集合框架的...

    高考数学集合专项知识点总结.docx

    - 示例1展示了通过元素的共性和区别判断集合关系的方法,例如M、N、P之间的关系可以通过它们的元素特点分析得出。 - 示例2展示了如何计算集合的子集个数,以及如何根据集合运算规则解决实际问题。 通过理解和掌握...

Global site tag (gtag.js) - Google Analytics