当前位置:首页 > 服务端 > Java常用集合——List集合、Set集合、Map集合

Java常用集合——List集合、Set集合、Map集合

2022年11月09日 17:34:14服务端10

List集合

先列举一下List集合的几个特点,再依次分析:

  1. 长度可变
  2. 可以存放不同数据类型
  3. 有索引
  4. 通过下标索引来获取数据
  5. 集合中的元素是有序的
  6. 可以有重复的元素

我们首先创建一个变量list:List list=new ArrayList(); 这里的List要选择后缀名java.util的那一个选项。
其实它刚打出来是这样的List<E> list=new ArrayList<E>(); 这个是可以删掉不写的,里面是泛型,后面再说。

往集合里放一些数据,我们可以用add();方法:list.add(123456); 也可以放入list.add("ABC");
这里体现了List集合的长度可变可以存放不同数据类型的特点。

我们想获取这些数据怎么办呢,有一个专门的方法可以获取——get();

System.out.println(list.get(0));
System.out.println(list.get(1));

这样就获取了刚刚放入的数据啦。(第一个数据的下标是0,第二个数据是1,以此类推)
这儿能够获取就是因为list集合有索引,并且是通过下标索引来获取数据的。我们来看一下输出结果:
Java常用集合——List集合、Set集合、Map集合 _ JavaClub全栈架构师技术笔记
这里只有两组数据,论据并不是很充分,可以多加几组,但是无论加多少组,你都会发现它的输出顺序是按着add的顺序来的,所以集合中的元素是有序的

这时候,我们再add一个相同的数据

List list=new ArrayList();
list.add(123456);
list.add("ABC");
list.add(123456);
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));

输出结果:
Java常用集合——List集合、Set集合、Map集合 _ JavaClub全栈架构师技术笔记
这里我们看出list集合是可以有重复的元素,这一点和数学中的集合不同。

想要删除数据,使用remove方法,同样也是用下标索引删除数据。

如果我们想获得这个集合的长度,也有个直接的方法——get(); System.out.println(list.size());这样,即可获得。

如果想遍历数组,可以这样写:

for (int i = 0; i < list.length; i++) {
     
	System.out.println(list.get(i));
}

链表集合

创建变量的公式:List<String> linklist=new LinkedList<String>();
这里我们在<>写了String,这意味着我们指定了数据类型,只能放String类型,不能放其他数据类型了,这里叫泛型

链表集合的添加和获取与List集合一样都是add和get方法,不再赘述。
但这里的遍历不仅可以用for循环,还可以用for-each循环:

for (String string : linklist) {
     
	System.out.println(string);
}

但是上面的List集合不能用for-each遍历,因为没有泛型,数据类型不统一。

Set集合

  1. 没有索引
  2. 不允许有重复元素
  3. 元素无序
  4. 允许有null值

Set集合我们用的最多的是HashSet:Set<String> set=new HashSet<String>();set集合的添加、删除同样也是add和remove方法,但是因为Set没有索引,我们获取的时候是找不到get方法的。
所以Set集合的输出可以直接输出:System.out.println(set);
也可以用for-each循环:

for (String string : set) {
     
	System.out.println(string);
}

输出会发现,结果的顺序并不是按照add的顺序来的,所以set集合的元素是无序的

如果我们set.add(null);这个是允许的。

TreeSet

  1. 有序集合,元素自然排列
  2. 不允许有null值
  3. 不允许有重复元素

TreeSet也是常用的:Set<String> treeSet=new TreeSet<String>();
获取数据的方法依旧是add。

与Set的不同点是,TreeSet想要遍历,必须使用迭代器
具体代码如下:

Set<String> treeSet=new TreeSet<String>();
treeSet.add("abcd");
treeSet.add("1234");
Iterator<String> it=treeSet.iterator();//这里的范型也得是String
while(it.hasNext()) {
     
	System.out.println(it.next());  //使用while循环

Map集合

这是我们用的最多的集合。
其特点是:

  1. key不能重复,如果重复,value的值会被覆盖
  2. key和value都可以为null
  3. 无序存储

使用HashMap:Map<String, String> map=new HashMap<String, String>();
Map集合的最大特点就是它是键值对来表示,键(key)、值(value)可相同也可不同

添加数据用到的不是add方法了,而是put方法:

map.put("1", "南京");
map.put("2", "上海");

可以通过key来获取数据:System.out.println(map.get("2"));这时候我们得到的是“上海”。
删除也可以用key来进行:map.remove("2");

如果在key和value的位置上都写上null,也是可以的。

遍历——只遍历value

Iterator<String>it=map.values().iterator();
while (it.hasNext()) {
     
	System.out.println(it.next());
}

遍历——遍历key和value
方法一:

for (String string : map.keySet()) {
     
	System.out.println(string+":"+map.get(string));
}

方法二:

for (Entry<String, String>entry : map.entrySet()) {
     
		String key=entry.getKey();
		String value=entry.getValue();
		System.out.println(key+":"+value);
}

HashTable

创建一个新变量:Map<String, String> table=new Hashtable<String, String>();
放入数据和Map集合一样用put方法。

遍历:

for (String string : table.keySet()) {
     
	System.out.println(string+":"+table.get(string));
}

HashTable与Map集合的不同点就是HashMap的key和value都不允许有null值。

啊终于敲完了!

作者:一颗坏蛋
来源链接:https://blog.csdn.net/qq_45879084/article/details/105083756

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/68808.html

标签: ListJavaMap
分享给朋友:

“Java常用集合——List集合、Set集合、Map集合” 的相关文章

数组转LIst的几种方法

第一种方式 /** * 针对数组类型转换 * 分别是int[]、long[]、double[],其他数据类型比如short[]、byte[]、char[],在JDK1.8中暂不支持 */ List<...

Java日志框架那些事儿

Java日志框架那些事儿

在项目开发过程中,我们可以通过 debug 查找问题。而在线上环境我们查找问题只能通过打印日志的方式查找问题。因此对于一个项目而言,日志记录是一个非常重要的问题。因此,如何选择一个合适的日志记录框架也非常重要。在Java开发中,常用的日志记录框架有JDKLog、Log4J、LogBack、SLF4J...

Java打印车票主要学习Java的比较语句

直接上代码 public static void main(String[] args) { // TODO Auto-generated method stub //初始化 Scanner in=new Scanner(S...

Flutter 组件之 CheckboxListTile

CheckboxListTile( activeColor: Colors.red, checkColor: Colors.yellow, value: _n...

Java Web 工作技巧总结 16.8

Java Web 工作技巧总结 16.8

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! 四时不谢之兰,百节长青之竹,万古不败之石,千秋不变之人。 1. AOP – LOG 项目中,一个请求过来,一个响应回去。...

Java 基础:hashCode方法

Java 基础:hashCode方法

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 一、前言     泥瓦匠最近被项目搞的天昏地暗。发现有些要给自己一些目标,关于技术的目标: 专注...

Java 容器 & 泛型:二、ArrayList 、LinkedList和Vector比较

Java 容器 & 泛型:二、ArrayList 、LinkedList和Vector比较

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 继续上一篇的容器文章认识容器,泥瓦匠慢慢带你们走进List的容器解说。今天泥瓦匠想说说 ArrayList 、LinkedList和Vector比较。...

Java 容器 & 泛型:三、HashSet,TreeSet 和 LinkedHashSet比较

Java 容器 & 泛型:三、HashSet,TreeSet 和 LinkedHashSet比较

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 上一篇总结了下ArrayList 、LinkedList和Vector比较,今天泥瓦匠总结下Hash 、LinkedList和Vector比较。其实大家都是...

Java虚拟机栈

Java虚拟机栈

栈帧的内部结构 每个栈帧中存储着 1.局部变量表(Local Variables) 2.操作数栈(Operand Stack)(或表达式栈) 3.动态链接(Dynamic Linking)(或执行"运行时常量池"的方法引用)----深入理解Ja...

【java】浅谈java内部类

【java】浅谈java内部类

最近在阅读《java核心技术 卷1》,对java内部类的基础知识梳理总结了一下,写下这篇文章和大家交流 前言 说到java内部类,想必大家首先会想到比较常用的“匿名内部类”,但实际上,这只是内部类的其中一种使用方式而已。内部类的使用方式实际...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。