Java面试的基础中的基础

今天我们来说一下Java中常用的集合类型。

面试时经常从Java的基础知识开始,最基础的部分莫过于Java的集合类型。我们知道Java的集合类型有三种,Set,List,Map,那这三种有什么区别呢。

List

List是我们用的最多的类型,它的特点是按次序存储,比如我们从1-10存入10个数,那么用 iteractor()来遍历的话也会是从1-10排列。

Set

Set比较特殊,它也可以认为是一种列表,然而它并不保存重复数据。像下面这段代码

Set set=new HashSet();  
String s1=new String("hello");   
String s2=s1;
String s3=new String("world");  
set.add(s1);  
set.add(s2);  
set.add(s3);

set的长度其实是2,因为s2和s1的值相同,所以不继续存放新值。 有兴趣的同学可以看HashSet的add的实现方法,会发现它实际上是把存放的元素作为key,来存放到一个HashMap中的,如果我们重复放两个相同的元素,因为哈希值相同,对于HashMap来说会认为是同一个key,因此不会新增key来存放数据。

Map

Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。 Map没有继承于Collection接口,一般的读取得通过key值来获取对应的数据。

总结,

List和Set都是实现了Collection的集合类型,不同处是List可以存放重复数据,而Set不同。 Map没有实现Collection接口,它对数据的读写都是基于key来进行的。

对于数据的存放,List是顺序存放,而Set和Map默认都不关心存放顺序,因此若想按顺序存放,则需要用LinkHashSet或者LinkHashMap。

原文发布于微信公众号 - Android每日一讲(gh_f053f29083b9)

原文发表时间:2018-03-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java学习

Java每日一练(2017/8/17)

每日一句 学的到东西的事情是锻炼,学不到的是磨练。 查看以前的所有练习题目以及答案:https://mp.weixin.qq.com/mp/homepage?_...

2829
来自专栏LinkedBear的个人空间

唠唠SE的集合-02——Iterator迭代器

迭代时如果没有先执行next()则会抛出IllegalStateException,这就意味着必须要先检查是否还有下一个可以被迭代的元素,才能往外取。

1003
来自专栏和蔼的张星的图像处理专栏

76. 最长上升子序列动态规划+二分查找

给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明 最长上升子序列的定义: 最长上升子序列问题是在一个无序的给定序列中找到一个尽可能...

4791
来自专栏Hongten

python开发_类型转换convert

E | hongtenzone@foxmail.com  B | http://www.cnblogs.com/hongten

1562
来自专栏深度学习与计算机视觉

算法-数字在排序数组中出现的次数

题目: 统计一个数字在排序数组中出现的次数,比如排序数组为{1,2,3,3,3,4,5},那么数字3出现的次数就是3。 解题思路: 1.首先,遍历数组肯...

2085
来自专栏用户3030674的专栏

java集合框架(hashSet自定义元素是否相同,重写hashCode和equals方法)

/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不一致,元素不可以重复 * (通过哈希值来判断是否是同一个对象) * ---...

1412
来自专栏文武兼修ing——机器学习与IC设计

抽象数据结构与表抽象数据结构表

抽象数据结构 抽象数据结构(ADT)是一些操作的集合,集合了一些必要且重用性高的操作,这些操作在一个项目中只被编写一次。抽象数据结构只定义操作的存在,并不定义操...

2876
来自专栏用户3030674的专栏

java集合的操作(set,Iterator)

Iterator、Collection、Set和HashSet关系  Iterator<——Collection<——Set<——HashSet  Iterat...

2143
来自专栏玄魂工作室

Python黑帽编程2.2 数值类型

Python黑帽编程2.2 数值类型 数值类型,说白了就是处理各种各样的数字,Python中的数值类型包括整型、长整型、布尔、双精度浮点、十进制浮点和复数,这...

2949
来自专栏lgp20151222

java中两个map比较

982

扫码关注云+社区

领取腾讯云代金券