第一章 集合框架和泛型(ArrayList/LinkedList/HashSet/HashMap/泛型集合/Collections算法类)

本文主要是介绍第一章 集合框架和泛型(ArrayList/LinkedList/HashSet/HashMap/泛型集合/Collections算法类),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一章 集合框架和泛型

一、Collection

1Collection 接口存储一组不唯一,无序的对象   

二、List

List 接口存储一组不唯一,有序(插入顺序)的对象

在这里插入图片描述

1.ArrayList

实现了长度可变的数组,在内存中分配连续的空间优点:遍历元素和随机访问元素的效率比较高
ArrayList类是List接口的一个具体实现类
ArrayList对象实现了可变大小的数组(插入的时候有顺序) 创建  ArrayList<类型> list=new ArrayList<>();

在这里插入图片描述

 List list=new ArrayList<>();
//按照顺序添加元素
list.add("张三");
//按照下标添加元素
list.add(1);//在添加之后其他的元素会自动往后面移动
//返回列表中的元素个数System.out.println( list.size());
//获取集合元素list.get(0);System.out.println( list.get(0));
//判断集合是否存在该元素,返回结果为boolean类型list.contains("张三");System.out.println( list.contains("张三"));
//从集合中删除元素
list.remove("张三")//删除在集合中出现的第一个元素,后面相同的不在删除
list.remove(1);
//清除集合内的全部元素
list.clear()
//判断集合是否为空list.isEmpty();

2.LinkedList

采用链表存储方式,插入、删除元素时效率比较高
arraylist有的共有方法,linklist都有
LinkedList类是List接口的一个具体实现类
LinkedList 类用于创建链表数据结构
插入或者删除元素时,它提供更好的性能
创建    LinkedList<类型> list = new LinkedList<>();

在这里插入图片描述

上图是linklist特有的方法

三、Set

Set 接口存储一组唯一,无序的对象
HashSetSet接口常用的实现类
Set中存放对象的引用

1、HashSet

创建: Set<Car//类型//> set=new HashSet();  

怎样去遍历Set集合

1、for增强循环

for(数据类型  自己定义:变量名)

2、通过迭代器Iterator实现遍历

 Iterator<Car> iterator = set.iterator();//创建一个迭代器来遍历 set 集合中的元素,操作 Car 类型的对象,说明集合中的元素类型是 Carwhile (iterator.hasNext()) {//判断有没有下一个元素,有的话为true,没有为flase
Car set = iterator.next();//next() 是 Iterator 接口中的一个方法,它返回迭代器的下一个元素。

四、Map

Map接口存储一组键值对象,提供key到value的映射 

在这里插入图片描述

1、HashMap

创建方法:HashMap<key的类型, value的类型> map = new HashMap<>();  
无序排列不能插入相同键的数据,否则values会被覆盖

遍历方法

1.通过迭代器Iterator实现遍历
  // 使用 Iterator 遍历Set keys=map.keySet();//返回所有兼的集合Iterator iterator = keys.iterator();while (iterator.hasNext()) {key = iterator.next();System.out.println(map.get(key));//通过键来获取值}
2:增强型for循环
keySet() 方法返回 HashMap 中所有键的 Set 视图。可以遍历这个 Set,然后通过 get() 方法获取每个键对应的值。
for (String key : map.keySet()) {System.out.println(key + ": " + map.get(key));}

五、泛型集合

泛型(Generics)允许你定义类、接口和方法时使用类型参数,从而使得代码更具类型安全性和复用性。泛型集合类是使用泛型的集合类,它们能够存储特定类型的对象,而无需进行强制类型转换。相当于在你创建列表的时候定义列表数据类型只能是引用数据类型:Integer,Folat,Double
//创建学员集合
ArrayList<Student> students = new ArrayList<Student>();
//创建学员类对象
Student student = new Student();
//创建诗类对象
Poem poem = new Poem();
//将两个对象添加到list集合中
students.add(student);
students.add(poem)
ArrayList<Student> 是一个类型为 Student 的集合,将 Poem 对象添加到这个集合中。由于 Poem 类不是 Student 类的子类,编译器会报错。

六、Collections算法类

CollectionsCollection不同,前者是集合的操作类,后者是集合接口
Collections提供的常用静态方法
sort():排序
max()\min():查找最大\最小值
sort()List<String> fruits = new ArrayList<>();fruits.add("Banana");fruits.add("Apple");fruits.add("Cherry");// 排序Collections.sort(fruits);System.out.println("Sorted list: " + fruits);
max()List<Integer> numbers = new ArrayList<>();numbers.add(10);numbers.add(20);numbers.add(5);// 查找最大值Integer maxNumber = Collections.max(numbers);// 查找最小值Integer minNumber = Collections.min(numbers);

重写compareTo()方法

 public int compareTo(Student other) {int sc = Integer.compare(this.score,other.score );//先进行成绩的比较升序,如果this>other return 1;进行位置交换 否则返回0/-1不交换位置if (sc==0) {return Integer.compare(this.age, other.age);//在分数相等时按照年龄精选排序}return sc;}

这篇关于第一章 集合框架和泛型(ArrayList/LinkedList/HashSet/HashMap/泛型集合/Collections算法类)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123162

相关文章

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Java中ArrayList的8种浅拷贝方式示例代码

《Java中ArrayList的8种浅拷贝方式示例代码》:本文主要介绍Java中ArrayList的8种浅拷贝方式的相关资料,讲解了Java中ArrayList的浅拷贝概念,并详细分享了八种实现浅... 目录引言什么是浅拷贝?ArrayList 浅拷贝的重要性方法一:使用构造函数方法二:使用 addAll(

基于Redis有序集合实现滑动窗口限流的步骤

《基于Redis有序集合实现滑动窗口限流的步骤》滑动窗口算法是一种基于时间窗口的限流算法,通过动态地滑动窗口,可以动态调整限流的速率,Redis有序集合可以用来实现滑动窗口限流,本文介绍基于Redis... 滑动窗口算法是一种基于时间窗口的限流算法,它将时间划分为若干个固定大小的窗口,每个窗口内记录了该时间

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig