4.2学习总结 Java:list系列集合

list系列集合:

++特点:++

++特有方法:++

示例代码:

java 复制代码
import java.util.List;
import java.util.ArrayList;
public class test {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        System.out.println(list);//[aaa, bbb, ccc]
        list.add(1,"ddd");
        //1为想要插入的索引位置。
        //原来索引上的元素后移
        System.out.println(list);//[aaa, ddd, bbb, ccc]
        list.remove(1);
        System.out.println(list);//[aaa, bbb, ccc]
    }
}

list集合的五种遍历方式:

迭代器遍历:能删除元素

增强for遍历

Lambda表达式遍历

普通for循环遍历

++列表迭代器遍历:能添加元素(list集合系列独有)++

示例代码:

java 复制代码
import java.util.*;
public class test {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        ListIterator<String> it = list.listIterator();
        while (it.hasNext()) {
            String str = it.next();
            if (str.equals("bbb")) {
                it.add("qqq");
            }
        }
        System.out.println(list);
    }
}

++Arraylist集合:++

右移运算符:

++泛型类:++

检查数据类型。

Integer类型不能强转为String类型。

泛型的继承和通配符:

泛型不具备继承性,但数据具有继承性。

泛型内写什么类型,就只能传递什么类型的数据值。

泛型的通配符:?就是一个问号。

洛谷p1223排队接水

源码:

java 复制代码
#include <stdio.h>
typedef struct {
    int time; 
    int index;
} Person;
void bubbleSort(Person arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j].time > arr[j + 1].time) {
                Person temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
int main() {
    int n;
    scanf("%d", &n);

    Person people[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &people[i].time);
        people[i].index = i + 1; 
    }
   
    bubbleSort(people, n);
   
    for (int i = 0; i < n; i++) {
        printf("%d", people[i].index);
        if (i != n - 1) {
            printf(" ");
        }
    }
    printf("\n");
    
    double total_wait_time = 0;
    double current_time = 0;
    for (int i = 0; i < n; i++) {
        total_wait_time += current_time;
        current_time += people[i].time;
    }
    double average_wait_time = total_wait_time / n;
   
    printf("%.2f\n", average_wait_time);
    return 0;
}
相关推荐
Mahir0816 分钟前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
辰海Coding21 分钟前
MiniSpring框架学习笔记-解决循环依赖的简化IoC容器
笔记·学习
晓梦林38 分钟前
cp520靶场学习笔记
android·笔记·学习
RyFit1 小时前
SpringAI 常见问题及解决方案大全
java·ai
石山代码2 小时前
C++ 内存分区 堆区
java·开发语言·c++
心中有国也有家2 小时前
cann-recipes-infer:昇腾 NPU 推理的“菜谱集合”
经验分享·笔记·学习·算法
Upsy-Daisy2 小时前
AI Agent 项目学习笔记(八):Tool Calling 工具调用机制总览
人工智能·笔记·学习
绝知此事2 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
无风听海2 小时前
C# 隐式转换深度解析
java·开发语言·c#
一只大袋鼠3 小时前
Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作
java·开发语言·git