![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
集合
java 集合
一只可爱的小狐狸
我亦无他,惟手熟尔
展开
-
Map实现类的比较
Map实现类的比较HashMap的存入顺序和输出顺序无关。Key值对象 hashCode和equals方法LinkedHashMap则保留了键值对的存入顺序,一般不会使用访问顺序。Key值对象 hashCode和equals方法LinkedHashMap虽然增加了时间和空间上的开销,但是通过维护一个运行于所有条目的双向链表,LinkedHashMap保证了元素迭代的顺序。该迭代顺序可以是插入顺序或者是访问顺序TreeMap则是对Map中的元素进行排序。要求key实现Comparable接口或者创建T原创 2021-03-10 21:26:11 · 935 阅读 · 2 评论 -
Hashtable
HashtableHashtable:线程安全的,不允许null的键或值;是线程安全的,但是Hashtable线程安全的策略实现代价却太大了,简单粗暴,get/put所有相关操作都是synchronized的,这相当于给整个哈希表加了一把大锁。多线程访问时候,只要有一个线程访问或操作该对象,那其他线程只能阻塞,相当于将所有的操作串行化,在竞争激烈的并发场景中性能就会非常差1、Hashtable不允许null值或者null键,编译时不会报错,但是运行报错。HashMap允许null值或者null键,只是k原创 2021-03-09 21:45:09 · 5173 阅读 · 6 评论 -
HashMap
HashMapHashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。HashMap 是无序的,即不会记录插入的顺序。HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。为什么HashMap中String、Integer这样的包装类适合作为KeySt原创 2021-03-08 18:32:22 · 1236 阅读 · 0 评论 -
Map接口
Map接口哈希表就是一种以键-值(key-indexed) 存储数据的结构,只要输入待查找的值即key,即可查找到其对应的值。哈希的思路很简单,如果所有的键hashCode都是整数,那么就可以使用一个简单数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。简单的计算方法hashcode%数组长度=【0,数组的长度-1】它提供了一组键值的映射。其中存储的每个数据对象都有一个相应的键key,键决定了值对象在Map中的存储位置。键应该是唯一的,不允许重复,每个key只能映射一个val原创 2021-03-08 17:38:15 · 1960 阅读 · 3 评论 -
set接口
Set接口特点:无序、不允许重复,是Collection接口的子接口没有定义新方法,所有的方法都是Collection接口中所定义的方法实现类HashSet存储采用哈希表的方式进行存储,HashSet采用HashCode算法来存取集合中的元素,因此具有比较好的读取和查找性能LinkedHashSet是在HashSet的基础上添加一个额外的链表结构可以记录存储数据的顺序TreeSet采用的是树状结构进行数据存储HashSet类定义底层实现方法:存储到Set中的所有数据最终都存储在一个Has原创 2021-03-05 15:29:39 · 1084 阅读 · 0 评论 -
泛型
什么是泛型泛型是jdk5引入的类型机制,就是将类型参数化,泛型作为一种安全机制而产生泛型在本质上是指类型参数化。所谓类型参数化,是指用来声明数据的类型本身,也是可以改变的,它由实际参数来决定。在一般情况下,实际参数决定了形式参数的值。而类型参数化,则是实际参数的类型决定了形式参数的类型。使用泛型的优势1、可读性,从字面上就可以判断集合中的内容类型;2 、类型检查,避免插入非法类型。3 、获取数据时不在需要强制类型转换。泛型类所谓泛型类generic class就是具有一个或多个类型参数的类原创 2021-03-04 16:43:33 · 1254 阅读 · 1 评论 -
对象赋值和克隆
对象赋值和克隆对象赋值 Date now2=now;两个变量now2和now中存放是同一个对象的地址,不管操作那个变量两个都受影响,因为now2和now是同一个对 象如果希望两个变量相互不影响,则只能通过克隆实现。Java中的克隆可以分为深克隆和浅克隆如果需要支持克隆操作要求必须实现Cloneable接口Object类中提供了clone()方法,这个方法是一个本地方法,是由虚拟机提供实现的protected native Object clone() throws CloneNotSupport原创 2021-03-03 19:18:50 · 3162 阅读 · 4 评论 -
常见的List接口的实现类
常见的List接口的实现类ArrayList:数组实现,查询快,增删慢,轻量级;(线程不安全)LinkedList:双向链表实现,增删快,查询慢 (线程不安全)Vector:数组实现,重量级 (线程安全、使用少)原创 2021-03-03 19:16:36 · 1100 阅读 · 1 评论 -
集合框架的接口
集合框架中的接口Collection接口顶级接口,继承Iterable接口无序、允许重复常见方法size():int获取元素个数contains(Object):boolean 判断集合中是否有指定对象使用的是equals方法进行判断,不是==toArray():Object[] 将集合中的所有元素以数组方式进行返回add(Object):boolean 向集合中添加元素remove(Object):boolean 从集合中删除指定的元素使用的是equals方法进行判断,原创 2021-03-02 19:18:23 · 1121 阅读 · 0 评论 -
数组和集合的比较
数组和集合的比较针对Java中的数组定长,Java提出了集合框架,实现了一种变长存储数据的容器—集合【容积和当前元素个数】数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。如下:数组能存放基本数据类型和对象,而集合类存放的都是对象的引用,而非对象本身数组容量固定无法动态改变,集合类容量动态改变数组无法判断其中实际存有多少元素,length只告诉了数组的容量,而集合的size()可以确切知道元素的个数集合有多种实现方式和不同适用场合原创 2021-03-01 16:19:10 · 1140 阅读 · 0 评论 -
概述集合
概述集合集合只能存放对象。比如你存一个 int 型数据 1放入集合中,其实它是自动转换成 Integer 类后存入的(装箱操作),Java中每一种基本类型都有对应的引用类型集合存放的是多个对象的引用,对象本身还是放在堆内存中集合可以存放不同类型,不限数量的数据类型。定义集合变量时如果不指定数据类型,则默认数据类型为Object...原创 2021-03-01 16:18:38 · 1066 阅读 · 0 评论