JavaSE——集合2:List(Iterator迭代器、增强for、普通for循环遍历集合)

news2025/1/18 10:50:21

目录

一、List

(一)List接口基本介绍

二、List接口的常用方法

三、List集合的三种遍历方式

四、小练习——使用冒泡排序遍历集合


一、List

(一)List接口基本介绍

List接口是Collection接口的子接口

public interface List<E> extends Collection<E> 
  1. List集合类中元素有序(即添加顺序和取出顺序一致)、且可重复
    List list = new ArrayList();
    list.add("jack");
    list.add("mary");
    list.add("tom");
    list.add("tom");
    System.out.println("list=" + list);
    // list=[jack, mary, tom, tom]
  2. List集合中的每个元素都有其对应的顺序索引,即支持索引。索引是从0开始的,可以根据索引存取集合中的元素。
    System.out.println(list.get(2)); // tom
  3. JDK API中List接口的实现类有:常用的是ArrayList、LinkedList和Vector

二、List接口的常用方法

// 准备数据
List list = new ArrayList();
list.add("jack");
list.add("mary");
list.add("tom");
list.add("tom");

// void add(int index, Object ele):在index位置插入元素
list.add(1, "john");
System.out.println("list=" + list);
// list=[jack, john, mary, tom, tom]

// boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来
List list2 = new ArrayList();
list2.add("张三");
list2.add("李四");
list.addAll(3, list2);
System.out.println("list=" + list);
// list=[jack, john, mary, 张三, 李四, tom, tom]


// get(int index):获取指定index位置的元素
System.out.println(list.get(5)); // tom


// int indexOf(Object obj):返回obj在集合中首次出现的位置
System.out.println(list.indexOf("tom")); // 5


// int lastindexOf(Object obj):返回obj在集合中末次出现的位置
System.out.println(list.lastIndexOf("tom")); // 6


// Object remove(int index):移除指定index位置的元素,并返回此元素
Object remove = list.remove(3);
System.out.println("移除的元素是:" + remove); // 张三


// Object set(int index, Object ele):设置指定index位置的元素为ele,相当于是替换
System.out.println("替换前:list=" + list);
// 替换前:list=[jack, john, mary, 李四, tom, tom]

Object ele = list.set(3, "王五");
System.out.println(ele + "替换后:list=" + list);
// 李四替换后:list=[jack, john, mary, 王五, tom, tom]


// List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合
// 注意:包头不包尾[fromIndex, toIndex)
List subList = list.subList(1, 5);
System.out.println("subList=" + subList);
// subList=[john, mary, 王五, tom]

三、List集合的三种遍历方式

注意:ArrayList、LinkedList和Vector集合的遍历,都适用于下面的遍历方法。

List list = new ArrayList();
// List list = new LinkedList();
// List list = new Vector();

for (int i = 0; i < 12; i++) {
    list.add("hello" + i);
}
// 方式一:迭代器遍历
Iterator iterator = list.iterator();
while (iterator.hasNext()){
    Object obj = iterator.next();
    System.out.println(obj);
}

// 方式二:增强for
for (Object obj : list) {
    System.out.println(obj);
}

// 方式三:普通for循环
for (int i = 0; i < list.size(); i++) {
    Object obj = list.get(i);
    System.out.println(obj);
}

四、小练习——使用冒泡排序遍历集合

创建Book类:

class Book {
    private String name;
    private String author;
    private double price;

    public Book(String name, String author, double price) {
        this.name = name;
        this.author = author;
        this.price = price;
    }

    @Override
    public String toString() {
        return "名称:" + name + "\t\t价格:" + price + "\t\t作者:" + author;
    }

    public double getPrice() {
        return price;
    }
}

创建集合: 

public class ListExercise02 {
    public static void main(String[] args) {
        List list = new ArrayList();
        //  List list2 = new LinkedList();
        //  List list3 = new Vector();

        list.add(new Book("红楼梦", "曹雪芹", 100));
        list.add(new Book("西游记", "吴承恩", 10));
        list.add(new Book("水浒传", "施耐庵", 9));
        list.add(new Book("三国", "罗贯中", 80));
        list.add(new Book("西游记", "吴承恩", 10));        
    }   
}

编写冒泡排序,从大到小排序:

public static void sort(List list) {
        for (int i = 0; i < list.size() - 1; i++) {
            for (int j = 0; j < list.size() - 1 - i; j++) {
                // 强制类型转换
                Book book1 = (Book) list.get(j);
                Book book2 = (Book) list.get(j + 1);
                if (book1.getPrice() < book2.getPrice()) {
                    // 替换
                    list.set(j, book2);
                    list.set(j + 1, book1);
                }
            }
        }
    }

main方法中调用sort()方法: 

// 排序前
for (Object o : list) {
    System.out.println(o);
}
sort(list);

System.out.println("---------------排序后------------------");
// 排序后
for (Object o : list) {
    System.out.println(o);
}

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2214284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华大基因与NRL完成技转合作,为中东家庭提供更优质的产前筛查方案

今年年初&#xff0c;华大基因与中东地区最大的美国病理学家学会&#xff08;CAP&#xff09;认证实验室集团National Reference Laboratory&#xff08;NRL&#xff09;&#xff0c;顺利完成了无创产前基因检测技术&#xff08;NIPT&#xff09;技转合作&#xff0c;并向NRL实…

AI先行者工具撰写的烧脑短篇,你不可错过

以下文字是我用ai先行者所创造的文字。我就输入烧脑故事四个关键字 昨晚&#xff0c;我像往常一样刷着朋友圈&#xff0c;准备结束一天的工作前放松一下。突然间&#xff0c;我的好友小林发了一条状态&#xff1a;“如果有人发现我不见了&#xff0c;请不要报警。”这句话配上…

【JAVA毕业设计】基于Vue和SpringBoot的加油站管理系统

本文项目编号 T 003 &#xff0c;文末自助获取源码 \color{red}{T003&#xff0c;文末自助获取源码} T003&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

金蝶云星空与金蝶云星空对接集成采购订单查询连通采购订单新增(采购订单)

金蝶云星空与金蝶云星空对接集成采购订单查询连通采购订单新增(采购订单) 对接系统金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上&#xff0c;提供了标准的管理模式&#xff1b;通过标准的业务架构&#xff1a;多会计准则、多币别、多地点、多组织、多税制应用…

Prometheus+Grafana 监控 Kubernetes

文章目录 一、Prometheus介绍二、Prometheus组件与监控三、Prometheus基本使用&#xff1a;怎么来监控四、Kubernetes监控指标五、Prometheus的基本使用&#xff1a;部署1.基于docker部署prometheusgrafana2. 查看prometheus配置文件3. 监控Linux服务器3.1找到自己相应的系统去…

php外卖霸王餐独立小程序 霸王餐源码 功能用户分销 会员系统 自用/推广私域运营

前言 外卖霸王餐小程序是一种结合了外卖点餐和优惠返利功能的微信小程序&#xff0c;旨在为用户提供一种便捷的点餐体验和优惠福利。 用户以5-10元吃到原价15-25元的外卖&#xff0c;底层逻辑是帮外卖商家做店铺推广&#xff0c;解决新店基础销量、老店增加单量、品牌打万单店…

Apache Kafka 使用示例

Kafka快速入门指南 微信公众号&#xff1a;阿俊的学习记录空间小红书&#xff1a;ArnoZhangwordpress&#xff1a;arnozhang1994博客园&#xff1a;arnozhangCSDN&#xff1a;ArnoZhang1994 第一步&#xff1a;获取Kafka 下载2.13-3.8.0版本的Kafka版本并解压&#xff1a; $…

2d实时数字人聊天语音对话使用案例,对接大模型

参看: https://github.com/wan-h/awesome-digital-human-live2d 电脑环境: ubuntu 1060ti 下载: git clone https://github.com/wan-h/awesome-digital-human-live2d.gitdocker部署; cd awesome-digital-human-live2d docker-compose -f docker-compose-quickStart.ya…

React 子组件调用父组件的方法,以及互相传递数据

<script type"text/babel" data-type"module"> import React, { StrictMode, useState } from react; import { createRoot } from react-dom/client;const ParentComponent () > {const [message, setMessage] useState("")//父组件…

代理模式、BigDecimal详解

代理模式 代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问&#xff0c;这样就可以在不修改原目标对象的前提下&#xff0c;提供额外的功能操作&#xff0c;扩展目标对象的功能 代理模式的主要作用是扩展目标对象的功…

kali(专业的渗透测试虚拟机)|kali下载链接地址 |kali安装 |kali部署指南

介绍 kali 是Debian开源linux系统体系下的子分支之一 Debian-kali 扩展&#xff1a;Ubuntu也是Debian开源linux系统体系下的子分支之一 Debian-ubuntu 安装kali 2023.03 稳定版 Index of /kali-images/kali-2023.1/ 安装可以参考他的教程&#xff0c; 写的很详细了…

编程练习5 转盘寿司

#include<iostream> #include<vector>using namespace std;//字符分割函数 //把字符串中的字符c剔除 同时将字符串中的其他内容以合适的类型保存 vector<int> split(string str_input, char c) {vector<int> result;while(str_input.find(c) ! -1){//…

阿拉伯语技术翻译的特点

将技术内容翻译成阿拉伯语具有独特的挑战和要求&#xff0c;这源于阿拉伯语复杂的结构、文化差异及其在全球科学技术领域中的地位。翻译人员需要具备深厚的语言专业知识&#xff0c;关注不断发展的科学技术术语&#xff0c;并了解阿拉伯语世界中的地区差异&#xff0c;以确保专…

安卓开发中实现可滑动区域触顶的提示

这篇博客记录在开发中使用 CoordinatorLayout、AppBarLayout 、CollapsingToolbarLayout实现监听滑动悬停的触顶提示&#xff0c;有不理解的小伙伴可移步之前的文章——安卓开发中上滑触顶悬停 上述三个控件的结构图如下&#xff0c;在滑动时需要触顶的部分需要在 AppBarLayo…

培训学校小程序开发

我是【码云数智】平台的黄导&#xff0c;今天分享&#xff1a;培训学校小程序开发 知识付费小程序能够实现线上音频课程、视频课程、直播课程以及专栏课程和图文课程&#xff0c;并且我们也针对营销端做了很多营销功能&#xff0c;可以精准触达目标用户&#xff0c;实现内容的…

软件设计之Redis(3)

软件设计之Redis(3) 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷Redis零基础到进阶&#xff0c;最强redis7教程&#xff0c;阳哥亲自带练&#xff08;附redis面试题&#xff09; 资料可以去尚硅谷官网免费领取 感谢学习笔记提供&#xff1a…

探索OpenCV的人脸检测:用Haar特征分类器识别图片中的人脸

目录 简介 OpenCV和Haar特征分类器 实现人脸检测 1. 导入所需库 2. 加载图片和Haar特征分类器 3. 检测人脸 4. 标注人脸 5. 显示 6、结果展示 结论 简介 在计算机视觉和图像处理领域&#xff0c;人脸识别是一项重要的技术。它不仅应用于安全监控、人机交互&#xff0…

日期类的实现和取地址运算符重载

前面将类学的差不多&#xff0c;接下来我们就来实现一下日期类。这个日期类包含运算符重载和前面学 的C的语法知识。 首先我们先建立一个日期类的头文件和源文件&#xff1a; 一.日期类的头文件实现&#xff1a; 首先我们要知道我们有闰年&#xff0c;还有每个月的天数也不一样…

推挽电路(图腾柱)

推挽电路&#xff1a;Push-Pull 即推-拉的意思。 推挽电路本质是功率放大电路&#xff08;放大电流&#xff09;&#xff0c;增大输入信号的驱动能力&#xff0c;具有以下两个特点。 1 很强的灌电流&#xff0c;即向负载注入大电流。 2 很强的拉电流&#xff0c;即从负载抽取…

【vue3】图片上传功能实现

本次功能使用的是vue3elementplusnodejsmultiparty实现的图片上传与使用。 属于自行摸索的部分&#xff0c;有很大改进地方。目前思路是图片和数据分别上传&#xff0c;在上传图片时返回图片地址&#xff0c;将地址保存到表单数据中&#xff0c;在获取图片时&#xff0c;通过地…