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

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

刘广法2022年03月21日 20:43:01Java教程4550
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/java/134.html

分享给朋友:

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

JDK的安装卸载以及环境配置

JDK的安装卸载以及环境配置

一、安装JDK首先应该先下载JDK,下面两个网站都是可以下载:下载地址:https://www.oracle.com/java/technologies/javase-downloads.htmlopenJDK 下载:http://jdk.java.net/下载的的就是下面这样的图标,版本号可能不一...

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

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

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

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

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

eclipse 自动提示功能的实现

eclipse 自动提示功能的实现

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

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

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

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

Java练习:从控制台输入一个年份,统计输入的年份到现在一共多少天?

从控制台输入一个年份,统计输入的年份到现在一共多少天?注意事项:1、平年365天,闰年十366天。2月份平年28天,2月份闰年29年。2、今年2022年3月14日3、闰年判断:能够被四百整数;能被4整数但不能被100整数public static void main(S...

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

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

Java教程 第八节:方法

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

Java练习:递归的实操

Java练习:递归的实操

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

关于Math.random();的说明

关于Math.random();的关系:一、随机产生某区间的数:int (Math.random() * (最大值 - 最小值) + 最小值)一、Math.random(); 在Java中式产生随机产生 [0,1) 之间的数创建一个方法:返回一个m~n 的值,包括m 但不包括 n ,如果返回 -1...

Java教程 第九节:字符串

创建字符串:// 创建字符串 String sString = "我是字符串"; String sString2 = "我是字符串2"; String sString3&nb...

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

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

发表评论

访客

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