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

第一章 集合框架和泛型

一、Collection

java 复制代码
1、Collection 接口存储一组不唯一,无序的对象   

二、List

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

1.ArrayList

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

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

上图是linklist特有的方法

三、Set

java 复制代码
Set 接口存储一组唯一,无序的对象
HashSet是Set接口常用的实现类
Set中存放对象的引用

1、HashSet

java 复制代码
创建: Set<Car//类型//> set=new HashSet();  

怎样去遍历Set集合

1、for增强循环

java 复制代码
for(数据类型  自己定义:变量名)

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

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

四、Map

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

1、HashMap

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

遍历方法

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

五、泛型集合

java 复制代码
泛型(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算法类

java 复制代码
Collections和Collection不同,前者是集合的操作类,后者是集合接口
Collections提供的常用静态方法
sort():排序
max()\min():查找最大\最小值
java 复制代码
sort()
     List<String> fruits = new ArrayList<>();
        fruits.add("Banana");
        fruits.add("Apple");
        fruits.add("Cherry");

        // 排序
        Collections.sort(fruits);
        System.out.println("Sorted list: " + fruits);
java 复制代码
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()方法

java 复制代码
 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;
    }
相关推荐
幼儿园蛋小黑1 分钟前
SPI 子系统:从原理到实践
java·前端·数据库
浅念-2 分钟前
动态规划:线性DP——多状态DP与子数组专题笔记
c++·笔记·算法·leetcode·职场和发展·动态规划·力扣
雪雪爱冲浪7 分钟前
JavaScript 网络爬虫教程(2026)
开发语言·javascript·爬虫
Data analyse45615 分钟前
rrweb回放事件资源加载顺序重放校验
前端·人工智能·算法·机器学习·数据分析
昨夜见军贴061618 分钟前
原始采样记录数字化落地,IACheck AI 报告文档审核 Agent 实现监测文档校验自动化
人工智能·算法·自动化
天竺鼠不该去劝架22 分钟前
企业 AI Agent 分部门、分行业业务落地场景清单
经验分享
要吃这碗饭24 分钟前
JavaScript 网络爬虫教程(2026)
开发语言·javascript·爬虫
czq_268671948725 分钟前
Python打卡第40天
开发语言·python
yangmu320327 分钟前
Unity 开发过程与底层原理
java·开发语言
不爱吃鱼的蔓热莓27 分钟前
Autosar之根据ARXML中报文信息生成SWC(二)
开发语言·python