第一章 集合框架和泛型(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;
    }
相关推荐
周杰伦_Jay40 分钟前
【Java虚拟机(JVM)全面解析】从原理到面试实战、JVM故障处理、类加载、内存区域、垃圾回收
java·jvm
rit84324994 小时前
基于MATLAB的模糊图像复原
开发语言·matlab
fie88894 小时前
基于MATLAB的声呐图像特征提取与显示
开发语言·人工智能
未来之窗软件服务4 小时前
自己写算法(九)网页数字动画函数——东方仙盟化神期
前端·javascript·算法·仙盟创梦ide·东方仙盟·东方仙盟算法
程序员小凯4 小时前
Spring Boot测试框架详解
java·spring boot·后端
路由侠内网穿透4 小时前
本地部署开源持续集成和持续部署系统 Woodpecker CI 并实现外部访问
服务器·网络·windows·ci/cd·开源
豐儀麟阁贵4 小时前
基本数据类型
java·算法
_extraordinary_5 小时前
Java SpringMVC(二) --- 响应,综合性练习
java·开发语言
CsharpDev-奶豆哥5 小时前
ASP.NET中for和foreach使用指南
windows·microsoft·c#·asp.net·.net
程序员 Harry5 小时前
深度解析:使用ZIP流式读取大型PPTX文件的最佳实践
java