开发技术-Java 获取集合中元素下标并移动至指定位置

1. 说明

某些业务需要特定的元素在列表的最后或者指定位置展示。

2. 代码

import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

@Data
@AllArgsConstructor
class Student {
    String name;
    int age;
}

public class TList {
    public static void main(String[] args) {
        List<Student> list = getList();
        System.out.println("原始list:" + list);

        // 按照年龄排序
        list = list.stream().sorted(Comparator.comparing(a -> a.getAge(),
                        Comparator.nullsLast(Comparator.naturalOrder())))
                .collect(Collectors.toList());
        System.out.println("按照年龄排序list:" + list);

        // 将18的排在最后面
        // 获取18的下标
        List<Student> finalList = list;
        OptionalInt first = IntStream.range(0, list.size())
                .filter(i -> finalList.get(i).getAge() == 18)
                .findFirst();
        if (first.isPresent()) {
            // 通过下标移除list中的原数据
            Student remove = list.remove(first.getAsInt());
            // 再次放入list
            list.add(remove);
        }
        System.out.println("18年龄排序list:" + list);

        // list add 还有个重载方法,可以指定下标放入
        Student s6 = new Student("剑圣", 52);
        list.add(2, s6);
        System.out.println("插入后list:" + list);

        // 扩展,Collections.swap 可以交换list中的元素
        Collections.swap(list, 1, 3);
        System.out.println("交换后list:" + list);

    }

    /**
     * 生成初始列表
     *
     * @return {@link List}<{@link Student}>
     */
    static List<Student> getList() {
        List<Student> list = new ArrayList<>();
        Student s1 = new Student("小炮", 81);
        Student s2 = new Student("人马", 35);
        Student s3 = new Student("精灵", 10);
        Student s4 = new Student("娜迦", 18);

        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);

        return list;
    }
}

在这里插入图片描述
(图网,侵删)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能图书馆开源项目

结尾有项目链接 技术栈介绍 ☃️前端主要技术栈 技术作用版本Vue提供前端交互2.6.14Vue-Router路由式编程导航3.5.1Element-UI模块组件库&#xff0c;绘制界面2.4.5Axios发送ajax请求给后端请求数据1.2.1core-js兼容性更强&#xff0c;浏览器适配3.8.3swiper轮播图插件&…

【漏洞复现】大华智能物联ICC综合管理平台文件读取漏洞

Nx01 产品简介 大华智能物联ICC综合管理平台是一个集成了多种智能物联应用服务能力的平台。该平台提供了一系列的基础能力&#xff0c;如中台基础能力、各智能物联应用服务能力以及周边生态支持。 Nx02 漏洞描述 大华智能物联ICC综合管理平台存在文件读取漏洞&#xff0c;攻击…

六、回归与聚类算法 - 欠拟合和过拟合

目录 1、定义 2、原因及解决方法 2.1 正则化 线性回归欠拟合与过拟合线性回归的改进 - 岭回归分类算法&#xff1a;逻辑回归模型保存与加载无监督学习&#xff1a;K-means算法 1、定义 2、原因及解决方法 2.1 正则化

【Unity3D】ASE制作天空盒

找到官方shader并分析 下载对应资源包找到\DefaultResourcesExtra\Skybox-Cubed.shader找到\CGIncludes\UnityCG.cginc观察变量, 观察tag, 观察代码 需要注意的内容 ASE要处理的内容 核心修改 添加一个Custom Expression节点 code内容为: return DecodeHDR(In0, In1);outp…

Flashbit空投

空投要点 明牌空投交互简单&#xff0c;仅需3步&#xff0c;零gas费要求加密钱包在eth链有过交易需要有x和discord账号 空投简介 是一个社区驱动的项目&#xff0c;专门针对Blast生态&#xff0c;项目方提出了空投计划&#xff0c;参与过该生态其他项目空投的都清楚&#xf…

探索什么是模糊测试 Fuzzing Test

什么是 "模糊测试"&#xff1f; Fuzzing 是一种发现软件缺陷的方法&#xff0c;它通过向程序提供随机输入来寻找导致程序崩溃的测试场景&#xff08;原理有点类似Monkey Test&#xff09;。可以帮助你快速了解程序整体的健壮性&#xff0c;并帮助你发现和修复关键的缺…

【Python常用包】pathlib

目录 简介Pathlib 库实现Path 创建路径对象检查路径类型创建和删除路径&#xff08;目录与文件&#xff09;读写文件路径匹配路径拼接和解析路径属性路径迭代和列出目录内容 小结 简介 Pathlib 是一个用于处理文件路径的 Python 库&#xff0c;提供了许多实用的函数和方法来处…

windows安装编译的python包

有时windows无法直接通过网络安装python包&#xff0c;需要从一个地方先下载好&#xff0c;再去安装&#xff0c;下载的一些编译好的python包&#xff0c;安装时发现提示“is not a supported wheel on this platform”&#xff0c;那可能就是下载编译好的版本不对。 可以通过…

代码随想录第二十四天 39.组合总和 40.组合总和II 131.分割回文串

LeetCode 39 组合总和 题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个…

电表(3)EC600N 4G模块通过mqtt向服务器发送数据

工具 1、ec600 2、stm32f030c8 3、keil5 4、腾讯云服务器&#xff08;ubutu20.04&#xff09; mqtt服务器 sudo apt install mosquitto mosquitto-clients sudo systemctl start mosquitto sudo vim /etc/mosquitto/mosquitto.conf sudo systemctl status mosquittolistene…

Aspose.Words For JAVA 动态制作多维度表格(涵2024最新无水印包)

全网最全Aspose.Words For JAVA 高级使用教程: CSDNhttps://blog.csdn.net/LiHaoHang6/article/details/133989664?spm1001.2014.3001.5501 运行截图&#xff1a; 所谓多维度表格通常包含多个维度, 每个维度都代表一种数据属性,多维度表格可以用于数据分析&#xff0c;通过不…

ArcgisForJS如何使用ArcGIS Server发布的切片地图服务?

文章目录 0.引言1.准备海量地理数据2.ArcGIS Server发布切片地图服务3.ArcgisForJS使用ArcGIS Server发布的切片地图服务 0.引言 ArcGIS Server是一个由Esri开发的地理信息系统&#xff08;GIS&#xff09;服务器软件&#xff0c;它提供了许多功能&#xff0c;包括发布切片地图…

Python实战:统计字符串中的英文字母、空格、数字及其他字符出现的个数

Python实战&#xff1a;统计字符串中的英文字母、空格、数字及其他字符出现的个数 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &…

Servlet使用过程中常见问题总结

&#x1f495;"Echo"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;Servlet使用过程中常见问题总结 前言:笔者在学习Servlet的过程中遇到了很多问题,这里总结一下 1.乱码问题 如果我们在响应报文中传输中文"你好",那么在浏览器之中显示…

Redis中的AOF重写到底是怎么一回事

首先我们知道AOF和RDB都是Redis持久化的方法。RDB是Redis DB&#xff0c;一种二进制数据格式&#xff0c;这样就是相当于全量保存数据快照了。AOF则是保存命令&#xff0c;然后恢复的时候重放命令。 AOF随着时间推移&#xff0c;会越来越大&#xff0c;因为不断往里追加命令。…

Java基于SpringBoot+Vue的图书馆管理系统,附源码,数据库

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

一款跳转警告HTML单页模板源码

一款跳转警告HTML单页模板,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 代码如下 <!DOCTYPE html> <html> <!--QQ沐编程 www.q…

HarmonyOS—使用预览器查看应用/服务效果

DevEco Studio为开发者提供了UI界面预览功能&#xff0c;可以查看应用/服务的UI界面效果&#xff0c;方便开发者随时调整界面UI布局。预览器支持布局代码的实时预览&#xff0c;只需要将开发的源代码进行保存&#xff0c;就可以通过预览器实时查看应用/服务运行效果&#xff0c…

统计图玫瑰图绘制方法

统计图玫瑰图绘制方法 常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图。 前几类图比较容易绘制&#xff0c;饼图环形图绘制较难。 还有一种玫瑰图的绘制也较难&#xff0c;今提供玫瑰图的绘制方法供参考。 本方法采用C语言的最基本功能&#xff1a; &am…

axure9.0 工具使用思考

原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】…