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

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

刘广法2022年03月21日 20:43:01Java教程8970
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教程 第四节:流程控制语句总结

流程控制语句:一、顺序结构顺序结构:按照写代码的顺序 一次执行二、分支结构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 自动提示功能的实现

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

eclipse的快捷键功能

eclipse的快捷键功能

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

eclipse 如何更换JDK版本 替换自带的JDK版本

eclipse 如何更换JDK版本 替换自带的JDK版本

设置jdk,用安装的JDK替换eclipse自带的JDK(详细步骤)1、Window-->Presferences2、进入后,搜索“java”,找到“Installed JRES”3、删除自带的JDK:选中自带的jdk,然后选择remove。4、添加自己安装的JDK:选中右边的Add,选择St...

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

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

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

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

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) { // 有控制台输入十个成绩,编程对这些成绩取平均值,并判断出成绩最大值和成...

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

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

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

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

发表评论

访客

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