您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

Java集合的常见用法你知道多少?

时间:2020-06-04 11:50:39  来源:  作者:

一、集合与数组的区别

相同点:都是用来存储数据的。不同点:1.集合带array的,底层由数组实现,还有一部分由其他方式(树、链表等)实现。2.数组大小固定,而集合没有固定的大小,更方便存储。3.数组只能放一种类型,集合不考虑泛型可以存多种类型。4.集合放基本类型是通过装箱拆箱(包装类与基本数据类型的转换)来实现的。(写泛形的时候不能用int,而要用Integer)

二、几种常用集合之间的关系

Java集合的常见用法你知道多少?

 

Map接口自成一系,是以键值对(Key,Value)方式存储数据的,属于双列集合。Set接口的实现类: HashSet、LinkedHashSet、TreeSet。List接口的实现类:ArrayList、LinkedList、Vector(线程安全)。Queue接口的实现类 : LinkedList、PriorityQueue。(没怎么用过,混个脸熟)Map接口的实现类:HashMap、TreeMap、Hashtable(线程安全)。

三、每种集合的性质

3.1Collection接口(单列)

Collection接口的常用方法:

add(T t) //添加指定元素 
remove(T t) //删除指定元素 
isEmpty() //集合是否为空 
iterator() //获得迭代器(Iterator类型),一般用于遍历 
size() //获得元素的个数 
contains(T t) //是否包含某元素

3.1.1.List 有序,可重复

List接口的常用方法

add(int index, T t) //向指定位置添加元素 
remove(int index) //删除指定元素 
get(int index) //获取指定位置的元素 
set(int index, T t) //修改指定位置的元素 
indexOf(T t) //获取指定元素的位置

ArrayList 底层数据结构是数组,查询快,增删慢。ArrayList的常用方法都是从List继承来的,就不多说了。LinkedList 底层数据结构是链表,查询慢,增删快。LinkedList 的常用方法:

getFirst() //获取第一个元素 
getLast() //获取最后一个元素 
offer(T t) //在最后位置追加元素 
offerFirst(T t) //在开头位置追加元素 
offerLast(T t) //在最后位置追加元素 
removeFirst() //删除第一个元素 
removeLast() //删除最后一个元素

Vector 底层数据结构是数组,线程安全,效率低。使用方法和ArrayList基本一样。

3.1.2.Set 不可重复

方法:常用的都是从Collection继承到的,就轻松了许多。HashSet (无序,唯一)底层数据结构是哈希表。如何保证唯一:hashCode()和equals()LinkedHashSet(有序,唯一)底层数据结构是链表和哈希表。链表保证有序,哈希表保证唯一。TreeSet(有序,唯一)

底层数据结构是红黑树。

1.如何排序(add()方法的重载):自然排序(无参add()调用Comparable的compareTo()方法)定制排序 (add(? extends Comparator)调用类实现的compare()方法)注:装载时若自然排序无法进行排序会报错,所以对装进集合的类实现Comparator接口进行自定义排序

2.如何保证唯一:根据比较的返回值是否为0来决定。

3.1.3.Queue 有序(FIFO先进先出)

PriorityQueue 有序(定制排序、自然排序(也就是说不是所谓的FIFO),我用的少,所以不是特别了解)

3.2Map接口(双列)

put (K key,V value):把键与值添加到Map集合中  
remove (K key):删除key对应的值  
get(K  key):根据指定的键,获取对应的值  
containKey(K key):判断是否包含指定的键  
entrySet() :返回Map.Entry型对象,用于遍历。(entry.getKey()/entry.getValue()) 
keySet(K key):获取Map集合中所有的Key,存储到set集合中(用于遍历)  
values(V value) :获取Map集合中所有的Value,存储到Collection集合中(用于遍历)

3.2.1HashMap

HashMap的常用方法都继承自Map接口,就不细说了。HashMap是最常用的键值对存储容器。

3.2.2.TreeMap

构造器:TreeMap()//创建一个空TreeMap,keys按照自然排序TreeMap(Comparator comparator)//创建一个空TreeMap,按照自定义的comparator排序。3.2.3.Hashtable(线程安全)

与HashMap的异同:同:Hashtable和HashMap使用方法基本一致。异:HashMap线程不安全,而Hashtable是线程安全的;HashMap的K和V都可以为null,而Hashtable的K,V都不能为null。

四、总结

1.没有其他要求时,最常用ArrayList、HashMap;2.不能重复时,用HashSet;3.需要线程安全时,用Vector、Hashtable。



Tags:Java集合   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Java Iterator接口表示一个对象,该对象能够遍历Java对象的集合,一次迭代一个对象。Iterator 接口是Java中用于迭代对象集合的最古老的机制之一(尽管不是最早的-Enumerator 早于...【详细内容】
2020-08-31  Tags: Java集合  点击:(57)  评论:(0)  加入收藏
一、集合与数组的区别相同点:都是用来存储数据的。不同点:1.集合带array的,底层由数组实现,还有一部分由其他方式(树、链表等)实现。2.数组大小固定,而集合没有固定的大小,更方便...【详细内容】
2020-06-04  Tags: Java集合  点击:(48)  评论:(0)  加入收藏
集合类简述在没有集合类之前,实际上在Java语言里已经有一种方法可以存储对象,那就是数组。数组不仅可以存放基本数据类型也可以容纳属于同一种类型的对象。数组的操作是高效率...【详细内容】
2020-03-01  Tags: Java集合  点击:(41)  评论:(0)  加入收藏
一些大公司面试总会问一些Java集合相关的知识,如ArrayList实现原理、HashMap实现原理等。所以作者准备做一个针对Java集合进行剖析的专题(后续几篇文章会全部围绕Java集合展开)。...【详细内容】
2019-12-17  Tags: Java集合  点击:(57)  评论:(0)  加入收藏
一、Java集合框架概述集合可以看作是一种容器,用来存储对象信息。所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。数组与集合的区别如下:1...【详细内容】
2019-11-06  Tags: Java集合  点击:(60)  评论:(0)  加入收藏
▌简易百科推荐
面向对象的特征之一封装 面向对象的特征之二继承 方法重写(override/overWrite) 方法的重载(overload)和重写(override)的区别: 面向对象特征之三:多态 Instanceof关键字...【详细内容】
2021-12-28  顶顶架构师    Tags:面向对象   点击:(2)  评论:(0)  加入收藏
一、Redis使用过程中一些小的注意点1、不要把Redis当成数据库来使用二、Arrays.asList常见失误需求:把数组转成list集合去处理。方法:Arrays.asList 或者 Java8的stream流式处...【详细内容】
2021-12-27  CF07    Tags:Java   点击:(3)  评论:(0)  加入收藏
文章目录 如何理解面向对象编程? JDK 和 JRE 有什么区别? 如何理解Java中封装,继承、多态特性? 如何理解Java中的字节码对象? 你是如何理解Java中的泛型的? 说说泛型应用...【详细内容】
2021-12-24  Java架构师之路    Tags:JAVA   点击:(5)  评论:(0)  加入收藏
大家好!我是老码农,一个喜欢技术、爱分享的同学,从今天开始和大家持续分享JVM调优方面的经验。JVM调优是个大话题,涉及的知识点很庞大 Java内存模型 垃圾回收机制 各种工具使用 ...【详细内容】
2021-12-23  小码匠和老码农    Tags:JVM调优   点击:(11)  评论:(0)  加入收藏
前言JDBC访问Postgresql的jsonb类型字段当然可以使用Postgresql jdbc驱动中提供的PGobject,但是这样在需要兼容多种数据库的系统开发中显得不那么通用,需要特殊处理。本文介绍...【详细内容】
2021-12-23  dingle    Tags:JDBC   点击:(13)  评论:(0)  加入收藏
Java与Lua相互调用案例比较少,因此项目使用需要做详细的性能测试,本内容只做粗略测试。目前已完成初版Lua-Java调用框架开发,后期有时间准备把框架进行抽象,并开源出来,感兴趣的...【详细内容】
2021-12-23  JAVA小白    Tags:Java   点击:(11)  评论:(0)  加入收藏
Java从版本5开始,在 java.util.concurrent.locks包内给我们提供了除了synchronized关键字以外的几个新的锁功能的实现,ReentrantLock就是其中的一个。但是这并不意味着我们可...【详细内容】
2021-12-17  小西学JAVA    Tags:JAVA并发   点击:(11)  评论:(0)  加入收藏
一、概述final是Java关键字中最常见之一,表示“最终的,不可更改”之意,在Java中也正是这个意思。有final修饰的内容,就会变得与众不同,它们会变成终极存在,其内容成为固定的存在。...【详细内容】
2021-12-15  唯一浩哥    Tags:Java基础   点击:(17)  评论:(0)  加入收藏
1、问题描述关于java中的日志管理logback,去年写过关于logback介绍的文章,这次项目中又优化了下,记录下,希望能帮到需要的朋友。2、解决方案这次其实是碰到了一个问题,一般的情况...【详细内容】
2021-12-15  软件老王    Tags:logback   点击:(19)  评论:(0)  加入收藏
本篇文章我们以AtomicInteger为例子,主要讲解下CAS(Compare And Swap)功能是如何在AtomicInteger中使用的,以及提供CAS功能的Unsafe对象。我们先从一个例子开始吧。假设现在我们...【详细内容】
2021-12-14  小西学JAVA    Tags:JAVA   点击:(21)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条