当前位置:首页 > 学习笔记 > Java教程 > Java教程 集合类list、set、map的相关知识点

Java教程 集合类list、set、map的相关知识点

刘广法2022年03月21日 20:43:01Java教程6800
Java教程 集合类list、set、map的相关知识点-第1张图片-刘广法IT博客

Java集合类框架:

Java ArrayList 类:

关于ArrayList 的相关描述:

1、ArrayList 类其实是一个动态的数组列表

2、ArrayList 类可以自动扩充数组的大小。底层实现就是数组。

3、ArrayList 类有严格的顺序,可以有重复的元素。

4、list 实现了collection 接口

声明ArrayList集合 :

ArrayList<Integer> list = new ArrayList();

add();往ArrayList 集合中添加
addAll();往ArrayList 集合中添加某个集合中所有的元素
get();从往ArrayList 集合中获取指定位置的数据
size();获取动态数据ArrayList中元素的个数
clear();清空ArrayList 集合中的所有元素
contains();判断集合中是不是有这个元素
containsAll()查看 arraylist 是否包含指定集合中的所有元素
set(int i,Obje obj);

修改ArrayList 集合中第 i 个的值为 obj 

remove();删除ArrayList 集合中的某个元素
removeAll()删除ArrayList 集合中的全部元素
indexOf()返回 arraylist 中元素的索引值
clone()复制一份 arraylist
subList()截取部分 arraylist 的元素

关于ArrayList的更多方法:

sort()排序
isEmpty()判断是否为空
toArray()转换成数组
toString()转换成字符串
ensureCapacity()设置指定容量大小的 arraylist
lastIndexOf()返回指定元素在 arraylist 中最后一次出现的位置
retainAll()保留 arraylist 中在指定集合中也存在的那些元素
trimToSize()将 arraylist 中的容量调整为数组中的元素个数
removeRange()
删除 arraylist 中指定索引之间存在的元素
replaceAll()将给定的操作内容替换掉数组中每一个元素
removeIf()删除所有满足特定条件的 arraylist 元素
forEach()遍历 arraylist 中每一个元素并执行特定操作

关于ArrayList的迭代:

迭代方式一:for循环,通过索引进行迭代

public static void main(String[] args) {
	ArrayList<String> list = new ArrayList<String>();
	list.add("刘广法博客");
	list.add("的网址是:");
	list.add("liuguangfa.com");
	
	//迭代
	for(int i = 0;i<list.size();i++) {
		System.out.println(list.get(i));
	}
}

迭代方式二:通过迭代器进行迭代

public static void main(String[] args) {
	ArrayList<String> list = new ArrayList<>();
	list.add("刘广法博客");
	list.add("的网址是:");
	list.add("liuguangfa.com");
	// 迭代
	Iterator<String> it = list.iterator();
	while (it.hasNext()) {
	System.out.println(it.next());
	}
}

迭代方式三:通过隐藏式迭代器进行迭代

public static void main(String[] args) {
	ArrayList<String> list = new ArrayList<>();
	list.add("刘广法博客");
	list.add("的网址是:");
	list.add("liuguangfa.com");
	// 迭代
	for (String i : list) {
		System.out.println(i);
	}
}

迭代方式四:通过集合的forEach方法

4.1通过创建一个类:MyConsumer

package com.liuguangfa.list;

import java.util.function.Consumer;

public class Myconsumer implements Consumer<String>{
	@Override
	public void accept(String t) {
		System.out.println(t);
	}
}

在main方法中进行调用

public static void main(String[] args) {
	ArrayList<String> list = new ArrayList<>();
	list.add("刘广法博客");
	list.add("的网址是:");
	list.add("liuguangfa.com");
	// 迭代
	list.forEach(new Myconsumer());
}

4.2通过 forEach 方法

list.forEach(System.out::println);

4.3通过 forEach 方法

list.forEach(i ->System.out.println(i));

以上方法Java控制台的输出结果一定是:

刘广法博客

的网址是:

liuguangfa.com

Java HashSet 类:

关于HashSet 类的描述:

1、HashSet 类无序

2、HashSet 类不重复(判断两个元素是否重复,是通过判断对象的哈希值是否相同,如果相同则认为两个元素相同,不相同就认为两个元素不同)

3、Set 实现了collection 接口

声明HashSet 类

HashSet<Student> set = new HashSet<>();

add();

添加元素
addAll();添加全部元素
size();
集合的长度
get();获取某个索引的元素
remove();删除元素
contains();判断元素中是否有这个元素

关于HashSet 的迭代:

HashSet 的迭代方式除了不能使用索引进行迭代其他的都可以进行迭代

迭代方法一:通过隐式迭代器进行迭代

public static void main(String[] args) {
	HashSet<String> set = new HashSet<>();
	set.add("刘广法博客");
	set.add("的网址:");
	set.add("liuguangfa.com");
	// 迭代
	for (String iString : set) {
		System.out.println(iString);
	}
}

Java控制台打印结果:

liuguangfa.com

刘广法博客

的网址:

Java HashMap 类:

关于 HashMap的相关描述:

1、映射:存储的数据是键值对(key - value)

2、实现了 map 接口

3、可以有重复数据,无序的

声明 HashMap 

HashMap<Integer, String> map = new HashMap<>();

put(key,value);添加元素
putAll(HashMap)添加所有元素到集合
size();集合长度
get(key);获取指定 key 值的 value
remove(key);
删除指定 key 值的 value
clear();清除集合
keySet();返回键(key)的集合

更多关于HashMap 的方法

clone();赋值一份 HashMap
isEmpty();判断 HashMap 是否为空
putIfAbsent();
如果 hashMap 中不存在指定的键,则将指定的键/值对插入到 hashMap 中。
containsKey();检查 hashMap 中是否存在指定的 key 对应的映射关系。
containsValue()检查 hashMap 中是否存在指定的 value 对应的映射关系。
replace()
替换 hashMap 中是指定的 key 对应的 value。
replaceAll()将 hashMap 中的所有映射关系替换成给定的函数所执行的结果。
getOrDefault()获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值
forEach()对 hashMap 中的每个映射执行指定的操作。
entrySet()返回 hashMap 中所有映射项的集合集合视图
keySet()返回指定集合中 key 的集合视图
values()
返回 hashMap 中存在的所有 value 值。
merge()添加键值对到 hashMap 中
compute()对 hashMap 中指定 key 的值进行重新计算
computeIfAbsent()对 hashMap 中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 hasMap 中
computeIfPresent()对 hashMap 中指定 key 的值进行重新计算,前提是该 key 存在于 hashMap 中。

关于 HashMap 迭代:

方法一:通过提取 key 的集合来获取

也就是转化为 Set 集合进行输出

public static void main(String[] args) {
	HashMap<String, String> map = new HashMap<>();
	map.put("one", "刘广法博客");
	map.put("twe", "的网址是:");
	map.put("three", "liuguangfa.com");
	// 迭代
	Set<String> keys = map.keySet();
	for (String i : keys) {
		System.out.println(map.get(i));
	}
}

Java控制台打印结果:

的网址是:

刘广法博客

liuguangfa.com

方法二:直接通过返回值的集合:

获取值不能使用 set 集合来接收,因为 HashMap 的 value 值可能存在相同的数据,而 Set 集合不能储存相同的数据。

用 Collection 来接受,是有顺序的,而 Map 是没有顺序的 ,这种迭代没有办法获取 key 的值。

public static void main(String[] args) {
	HashMap<String, String> map = new HashMap<>();
	map.put("one", "刘广法博客");
	map.put("twe", "的网址是:");
	map.put("three", "liuguangfa.com");
	// 迭代
	Collection<String> e = map.values();
	for(String i:e) {
		System.out.println(i);
	}
}

方法三:Entry 用于表示一个键值对

用 entrySet 进行返回所有键值对的集合

public static void main(String[] args) {
	ArrayList<String> list = new ArrayList<>();
	list.add("刘广法博客");
	list.add("的网址是:");
	list.add("liuguangfa.com");
	// 迭代
	Iterator<String> it = list.iterator();
	while (it.hasNext()) {
	System.out.println(it.next());
	}
}0

方法四:通过forEach进行迭代:

public static void main(String[] args) {
	ArrayList<String> list = new ArrayList<>();
	list.add("刘广法博客");
	list.add("的网址是:");
	list.add("liuguangfa.com");
	// 迭代
	Iterator<String> it = list.iterator();
	while (it.hasNext()) {
	System.out.println(it.next());
	}
}1

Java LinkedList 类:


来源:刘广法博客,请注意转载出处,网站地址为:https://liuguangfa.com/

扫描二维码推送至手机访问。

版权声明:本文由刘广法博客发布,如需转载请注明出处。

本文链接:https://liuguangfa.com/java/134.html

分享给朋友:

“Java教程 集合类list、set、map的相关知识点” 的相关文章

Java教程 第二节:基本数据类型与变量

一、关键词在java中有特殊含义的一些词,比方说 public class 等。break;break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。break 跳出最里层的循环,并且继续执行该循环下面的语句。二、标识符起唯一标识作用的,类似我们自己的姓名,学校中的学号,公司中的工...

使用eclipse进行文件的导入和导出

使用eclipse进行文件的导入和导出

该说不说,学会这个项目可以省很多的事情,刘广法可以用这个方法借鉴同学的项目,可以进行参考、借鉴、以及抄作业。一、使用eclipse进行项目的导出:1、使用eclipse进行项目的导出第一步:找到所在的项目工作空间,如果你知道的话,可以直接打开文件进行打包发送给你的好友,如果想要知道项目工作空间如何修...

Java教程 第四节:流程控制语句总结

流程控制语句:一、顺序结构顺序结构:按照写代码的顺序 一次执行二、分支结构1、if语句if(条件){     语句块 }2、if...else...语句if(条件){     语句块 }else{  ...

java学习:Java流程控制语句的相关测试题

第一题:将所有包含3的三位数整数相加求和。103 131 133 301类似。public static void main(String[] args) { int n = 100;// 从n开始三位数...

eclipse删除工作空间的详细步骤(图解)

eclipse删除工作空间的详细步骤(图解)

上一次我修改添加eclipce的工作空间,但只我的eclipce上有两个工作空间,今天我想删除一个第一步: Window > Preferences > General > startup and shutdown -->workspace这就是删除eclipse的...

eclipse 自动提示功能的实现

eclipse 自动提示功能的实现

之前用的版本都是有提示的,最近安装的最新版没有提示,今天就设置让自动提示出来第一步:windows”->"preferences",弹出preferences设置窗口。第二步:在preferences中找到Java,依次展开列表"Editor"->...

eclipse的快捷键功能

eclipse的快捷键功能

有一些快捷键是可以修改的,具体修改过程如图下:修改快捷的详细步骤:1、使用快捷键调出快捷键列表进行查看:快捷键列表调用:shift + ctrl + L2、window->preferences->general->keys(或直接搜索keys)快捷键列表:shuft + ctrl...

eclipse 修改默认的工作空间以及修改个人工作空间的编码

eclipse 修改默认的工作空间以及修改个人工作空间的编码

一、修改工作空间workspaceFile-->Awitch Workspace-->Other,就打开下面的图,然后选择我标起来的就可以新建工作空间了。二、设置工作空间workspace的编码为UTF-8设置完你所用的工作空间也就是上一步后,需要修改工作空间的编码为UTF-8步骤如下:...

用Java实现打印各种图形总结篇(矩形、平行四边形、三角形、菱形)

1、用Java实现打印矩形(长方形、正方形): public static void main(String[] args) { for (int y = 0; y < ...

Java学习 第五节:break和continue关键字

break和continue关键字break:表示中断,退出。退出当前一层循环。一旦break,后面的语句将不会得到执行。continue:中断本次循环,直接进行下一次的循环。continue后面的语句将不会得到执行。...

Java教程 第六节:数组

数组数组:简单来说,就是一组相同数据类型的数。float[] score = new float[6];索引或者下标:必须是整数,不能为负。最大下标等于数组长度-1。float[0],就是float类型数据score的第一个项。数组的下标结合循环,可以简化对批...

Java练习:将数组中的元素首尾调换

数组课堂练习:将数组中的元素首尾调换 public static void main(String[] args) { // 数组课堂练习:将数组中的元素首尾调换 int[] a = { ...

发表评论

访客

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