HashMap,Hashset,ArrayList以及LinkedList集合的区别,以及各自的用法
来源:互联网 发布:中国人口会下降吗 知乎 编辑:程序博客网 时间:2024/05/17 18:44
一、基础内容
容器就是一种装其他各种对象的器皿。java.util包
容器:Set, List, Map ,数组。只有这四种容器。
Collection(集合) 一个一个往里装,Map 一对一对往里装。
Set:没有顺序,不可以重复。 List:有顺序,可以重复。 互相的equals就算重复。
Map定义了存储Key-Value的方法。
Collection里装的必须都是Object,不能是基础类型。比如Int类型的值分配在栈上,而栈上的内容都是动态的。
容器类对象在调用remove,cotains等方法时,需要比较对象是否相等,这会涉及到对象类型的equals方法和hashCode方法,对于自定义的类型,需要重写equals方法和hashCode方法以实现自定义对象相等。
原则: 如果要重写equals方法,那必须重写hashCode方法。两个对象互相equals,那这两个对象必须具有相同的hashCode。
比较两个对象是不是相等的时候,主要用的是equals方法,当对象用在Map里面作为键时用hashCode方法,这样效率比较高。当对象当做键的时候,hashCode会有用。
两个对象如果互相equals,那么他们的hashCode一定相等。
二、HashMap,Hashset,ArrayList以及LinkedList集合的区别,以及各自的用法:
HashMap:HashMap实现了Map接口,底层使用的是Hash算法存储数据。HashMap将数据以键值对的方式存储。
HashSet:HashSet实现了Set接口,底层也是用的是Hash算法存储数据。而且HashSet内部有HashMap类型的成员变量,方法也调用了HashMap的方法,存储的时候只不过值为null.
ArrayList:ArrayList实现了List接口,底层使用的是数组,存储空间上是相邻的,所以查询起来会很方便,效率也会比LinkedList要高
LinkedList:实现了List接口,底层使用的是使用双向链表的形式,存储的数据在空间上很可能不相邻,但是他们都有一个引用连在一起,所以增删起来会很方便
Vector与ArrayList十分相似,区别就是就是vector是一种线程安全类,它的方法都带有Synchronized关键字,实际中很少用到。如果遇到多线程的问题,JAVA提供了一个Collections工具类,可以把ArrayList转换成线程安全的类。
- HashMap,Hashset,ArrayList以及LinkedList集合的区别,以及各自的用法
- HashMap,Hashset,ArrayList以及LinkedList集合的区别和用法
- ArrayList、LinkedList、HashSet以及HashMap
- List,Map,Set以及常用的ArrayList,LinkedList,HashMap的区别和用法
- ArrayList与LinkedList 以及 Hashtable与HashMap之间的区别
- ArrayList和LinkedList 以及 Hashtable和HashMap的区别
- Java集合中的ArrayList LinkedList HashSet TreeSet HashMap TreeMap 的区别
- ArrayList、LinkedList和HashSet、TreeSet以及HashMap、TreeMap是如何实现存储的?
- ArrayList、LinkedList和HashSet、TreeSet以及HashMap、TreeMap是如何实现存储的?
- ArrayList、LinkedList和HashSet、TreeSet以及HashMap、TreeMap是如何实现存储的?
- HashSet TreeSet LinkedList ArrayList Hashmap Treemap的一些区别
- Arraylist和linkedlist的区别,hashmap和hashtable的区别,hashmap和hashset的相同与不同,hashcode的用法
- HashMap和HashTabe,以及HashSet的区别
- ArrayList,LinkedList以及Vector的区别?
- ArrayList,LinkedList以及Vector的区别?
- ArrayList LinkedList 的区别 以及使用场合
- 8 ArrayList,LinkedList以及Vector的区别?
- Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
- 树的应用 森林 并查集
- include<ctype>
- 第一次c++上机报告--2
- java Jackson 库操作 json 的基本演示
- 1045. Favorite Color Stripe (30)
- HashMap,Hashset,ArrayList以及LinkedList集合的区别,以及各自的用法
- hibernate的对象三种状态说明
- Pycharm创建文件模板
- windows下python 安装igraph库报错 Cannot find the C core of igraph on this system using pkg-config.的解决
- CRC查找表法推导及代码实现比较
- javase的三层框架笔记
- transient
- 基于LDA的Topic Model变形
- Libevent源码分析(二)--- 时间管理