Java 数组与List转换

news2025/1/22 8:06:00

int[]List<Integer> 转换

刷题常见

int[]List<Integer>

// int[] 转 List<Integer>
int[] arr = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());

解释:

Arrays.stream(arr)  // IntStream
      .boxed()  // Stream<Integer>
      .collect(Collectors.toList());  // List<Integer>

List<Integer>int[]

// List<Integer> 转 int[]
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
int[] arr = list.stream().mapToInt(x -> x).toArray();

解释:

int[] arr = list.stream()  // Stream<Integer>
                .mapToInt(x -> x)  // IntStream
                .toArray();  // int[]

int[][]List<int[]> 转换

注意到 List 接口自带两个 toArray() 方法

在这里插入图片描述

  • 第一个返回 Object[] 类型,一般不会使用。
  • 第二个需要一个泛型参数,因此只能转换对象数组。

对第二个 toArray() 来说,int[] 类型就不能之间转换,因为 int 是基本类型,不属于 T。然而对二维数组来说就可以使用,二维数组的类型是 int[][],二维数组其实可以看成是一维数组,其中每个元素又是一维数组,而一维数组是对象,属于 T。下图展示了对应关系。

在这里插入图片描述
因此二维int数组可以通过 toArray() 方法转换。

List<int[]>int[][]

// List<int[]> 转 int[][]
List<int[]> list = new ArrayList<>(Arrays.asList(new int[]{1, 10}, new int[]{2, 20}, new int[]{3, 30}));
int[][] arr = list.toArray(new int[0][]);  // new int[0][]起到模板作用

参考:Java集合使用注意事项总结


力扣例题
406. 根据身高重建队列

class Solution {
    public int[][] reconstructQueue(int[][] people) {
        Arrays.sort(people, (a, b) -> {
            if(a[0] == b[0]) return a[1] - b[1];
            else return -(a[0] - b[0]);
        });

        List<int[]> res = new ArrayList<>();
        for(int[] person : people){
            res.add(person[1], person);
        }

        return res.toArray(new int[0][]);  //List<int[]> 转 int[][]
    }
}

int[][]List<int[]>

// int[][] 转 List<int[]>
int[][] arr = {{1, 10}, {2, 20}, {3, 30}};
List<int[]> list2 = Arrays.stream(arr).collect(Collectors.toList());

对象数组与List转换

Java中除了基本类型就是对象。

String 对象为例

List 转对象数组

// List<String> 转 String[]
List<String> list = new ArrayList<>(Arrays.asList("abc", "123", "xyz"));
String[] s = list.toArray(new String[0]);

对象数组转 List

// String[] 转 List<String>
String[] s = {"abc", "123", "xyz"};
List<String> list = Arrays.stream(a).collect(Collectors.toList());

总结

stream 比较通用,toArray() 对基本类型如 int 不适用,实在忘了就老老实实写循环复制一遍。

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

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

相关文章

基于Ant DesignPro Vue + SpringBoot 前后端分离 - 部署后解决跨域的问题

基于Ant DesignPro Vue SpringBoot 前后端分离 - 部署后解决跨域的问题 通过Ant DesignPro Vue SpringBoot 搭建的后台管理系统后&#xff0c;实现了前后端分离&#xff0c;并实现了登录认证&#xff0c;认证成功后返回该用户相应权限范围内可见的菜单&#xff1b;但时将服务…

剑指 Offer II 105. 岛屿的最大面积代码注释

题目&#xff1a; 给定一个由 0 和 1 组成的非空二维数组 grid &#xff0c;用来表示海洋岛屿地图。 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合&#xff0c;这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0&#xff08;代表…

第一章 集合框架

文章目录 什么是集合框架集合接口Set和List的区别 集合实现类&#xff08;集合类&#xff09;集合算法 什么是集合框架 官方教程 Java 集合框架 Java Collection Framework &#xff0c;又被称为容器container&#xff0c;是定义在java.util包下的一组接口 interfaces和其实现…

【华为HCIP | 高级网络工程师】刷题日记(8)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生 &#x1f43b;‍❄️个人主页&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;落798. &#x1f54a;️系列专栏&#xff1a;零基础学java ----- 重识c语言 ---- 计算机网络 &#x1f413;每日一…

68.建立手风琴组件第一部分

本节目标 使用的文件 本次使用的文件可私信我获取&#xff0c;本次就只有两张图片 ● 我们导入两个照片至我们的项目文件夹&#xff0c;并新建一个HTML文件 ● 之后我们输入感叹号&#xff0c;让他自动为什么生成初始代码 ● 之后我们修改下title&#xff0c;导入字体、…

springboot+vue家具网站(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的家具网站。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&#…

kafka之消费者进阶

一、几个概念 1. 消费者组 消费者组&#xff1a;一个消费者组包含多个消费者。同一个消费组的消费者&#xff0c;分别消费不同的partition&#xff0c;便于加快消费。 kafka约定在一个消费者组中&#xff0c;对于同一个topic&#xff0c;每个consumer会分配不同partition&am…

Unity搭建VR全景图

VR全景图片显示和相机旋转 ** 如果需要内置面材质球文件&#xff0c;可以私信下我 ** 场景构建 创建项目后拖进所需文件 文件有内置面材质球、图片等 创建文件 拖拽内置面材质球进入场景&#xff0c;并设置相机在球内部 再创建一个材质球&#xff0c;命名和图片相同 选…

springcloud+springboot+vue学生信息管理系统(选课,成绩,奖惩,奖学金,缴费)xnt81

后端语言&#xff1a;Java 框架&#xff1a;springcloudspringboot 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 学生信息管理系统主要实现角色有管理员和学生,教师,管理员在后台管理学生模块、学籍信息模块、选择课程模块、用户表模块、收藏表模块、课程信息模块…

国产航顺HK32F030M: 448byte EEPROM

EEPROM (~Electrically Erasable Programmable read only memory~)是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。 HK32F030M用户手册V1.1.9.pdf bsp_eeprom.c #include "bsp_eeprom.h"/*****************************************************…

springboot+vue房产销售平台(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的房产销售平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&a…

切换以太网接口MAC地址的批处理脚本

MAC&#xff08;媒体访问控制&#xff09;地址是网络设备的唯一标识符&#xff0c;用于网络通信。MAC 地址通常在设备制造时被分配并写入硬件。然而&#xff0c;在某些情况下&#xff0c;你可能需要或想要更改设备的 MAC 地址。以下是一些可能的理由&#xff1a; 1. **隐私和安…

Linux期末复习总结

一、Linux基础及安装 LINUX是在UNIX基础上开发,具有UNIX全部功能。 **Linux特点&#xff1a;**开放性、多用户、多任务、出色的稳定性、良好的用户界面、设备独立性、丰富的网络功能、安全性、可移植性 Linux由4个主要部分组成&#xff1a;内核、Shell、文件系统、应用程序 …

【Python入门篇】——Python中循环语句(while循环的基础语法和基础案例)

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; Python入门&#xff0c;本专栏主要内容为Python的基础语法&#xff0c;Python中的选择循环语句…

如何获得高并发经验?看这篇文章就够了

如何获得高并发经验&#xff1f; 这是我今天逛知乎的时候系统邀请我回答的一个问题&#xff0c;由此也引发了我的一些思考&#xff1a;为什么人人都想要获得高并发经验&#xff1b;想拥有高并发系统设计技能&#xff1f; 其原因LZ认为主要有以下三点&#xff1a; 涨薪&#x…

MD-MTSP:麻雀搜索算法SSA求解多仓库多旅行商问题(提供MATLAB代码,可以修改旅行商个数及起点)

一、多仓库多旅行商问题 多旅行商问题&#xff08;Multiple Traveling Salesman Problem, MTSP&#xff09;是著名的旅行商问题&#xff08;Traveling Salesman Problem, TSP&#xff09;的延伸&#xff0c;多旅行商问题定义为&#xff1a;给定一个&#x1d45b;座城市的城市集…

【C++】内联函数----inline函数的详细使用教程

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…

分享一个一键换肤按钮(超酷)

先上效果图&#xff1a; 效果图中转换为黑夜会有一个宇航员小猴子飞上来&#xff0c;途中没有截到。。。。 废话不多说&#xff0c;上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title…

通过VS开发人员命令提示符(developer command prompt)查看类

1.首先打开开始菜单栏&#xff0c;找到相应的VS版本。这里以VS2022为例 2.找到developer command prompt选项&#xff0c;点击进入 3.进入控制台&#xff0c;进入源文件所在的盘符&#xff08;这里以D盘为例&#xff0c;如果是默认C盘可以不用改&#xff09; 4.输入cd 文件地址…

printBanner

主类 package com.example.demo;import com.application.Application;public class Demo {public static void main(String[] args) {Application application new Application("application.properties");application.run();}}创建对象&#xff0c;需要的参数&…