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

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

刘广法2022年03月21日 20:43:01Java教程7790
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的相关知识点” 的相关文章

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

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

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

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

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

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

Java练习:找出三位数中所有的水仙花的值

找到三位数中所有为水仙花的值1、水仙花:百位数的立方+十位数的地方+个位数的立方等于这个数本身。2、三位数中。具体的步骤:public static void main(String[] args) { int i =&nbs...

Java练习:打印出所有3位数的素数

课堂练习:打印出所有3位数的素数。素数:只能被1和其本身整除的数 public static void main(String[] args) { // 打印三位数的素数,素数只能被1和本身整数的数。 for (int...

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

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

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

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

Java教程第七节:选择排序法和和冒泡排序法

选择法排序:分为若干轮比较,每一轮找出一个最大值。刘广法整理思路:假设有数组{ 1, 2, 3, 5, 98, 24, 6, 456, 14 },假设第一个数字最大,然后从第二个开始依次和第一个比,如...

Java练习:定义一共整数数组a,b,两个数组,判断两个数组中的重复的元素以及重复次数

Java课后作业:定义一共整数数组a,b,两个数组,判断两个数组中的重复的元素以及重复次数问题1:判断两个数组中重叠的元素?问题2:重叠的元素都重叠了几次,进行排序输出?本题关键:去重(验证之前是否验证过此数)、排序,(冒泡排序法和选择排序法)、关键字break 和continue 的使用 //&n...

Java教程 第八节:方法

定义方法:返回值类型 函数名称(函数列表){       // 函数体,可以执行代码,可以是0行或者多行。}我们常见的 main 方法就是一个在Java中最常见的方法:public static viod main(String []arg...

Java练习:递归的实操

Java练习:递归的实操

Java学习:递归的实操递归就是直接或者间接调用滋生。需要注意的就是,一定要有一个判断条件让这个死循环结束。Java学习递归实操训练一:利用递归算出10的阶乘:此方法是常规方法:<主要用作和下面用递归的对比> public static void main(...

Java练习:String相关练习 统计字符串中某一个字符/字符串出现的次数

Java练习:String相关练习 统计字符串中某一个字符/字符串出现的次数课堂练习:定义一个字符串"oaoaofdsafdasfdsare2qoaoaoaooooaaaaaoaoaoerefdsavjasjfdasofaoaoaa";统计此字符串,oa出现的次数。方法一:把oa...

Java练习:面向对象的对应练习题

Java练习:面向对象的对应练习题创建有20个学生对象,每个学生有不同的名字和性别、考试成绩。给这20个学生随机的考试成绩。使用面向对象的思想。题目1:统计这20个学生的平均分,男生的平均分,女生的平均分。题目2:按照考试成绩,对这个20个学生进行排序方法一:刘广法自己的方法(比较难)Clazz类(...

发表评论

访客

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