关于JAVA的数组indexOf()方法和int数组转list

本文介绍了在解决LeetCode问题时遇到的Java中数组操作问题,特别是int数组转换为Integer数组以便使用indexOf方法。文章讨论了三种方法,包括直接引包、使用Arrays.binarySearch和通过List的indexOf方法,并详细阐述了每种方法的优缺点,特别强调了int[]不能直接转为List,需要先进行封箱操作。提供了三种封箱转为Integer数组的方法,包括使用for循环、创建新的Integer数组以及使用数据流转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一次做力扣,最简单难度的第一题,做了两个小时。。。

题目逻辑很简单,主要困难在于不了解 int 和 Integer 之间的差别,导致在 int[] --> Integer[] 这件事上花费了很多时间。(坚信有简单的办法,绝对不妥协用循环!)

当然付出都是有收获的,中间尝试了很多种方法。

主要目的:想直接indexOf一个数组,但Java似乎不存在直接的搜索并返回索引方法。

方法一:

import org.apache.commons.lang3.ArrayUtils; //引入工具包

String[] colours = { "Red", "Orange", "Yellow", "Green" };

int indexOfYellow = ArrayUtils.indexOf(colours, "Yellow");

优势:简单快捷 ;

劣势:需要引包;

方法二:

 直接使用Arrays.binarySearch()

binarySearch(array,a); 返回值有可能出现 其他负数值

 

方法三:

list.indexOf(a); 若list不存在a则返回 -1,存在则返回索引值

注意:

int[] 不能直接转list ,需要封箱成Integer类型的数组才能new List<>

int[]  转 List<Integer> :

方法1:

for循环,直接list.add(intValue(int[i]));

方法2:

Integer[] theArray= new Integer[array.length]  //注意,数组初始化必须给定长度

for循环成Integer[] ,再使用Arrays.asList(theArray)转成 list (有点鸡肋)

方法3:(不想循环的就用它吧!)

用数据流转化    List<Integer> list = Arrays.stream( nums ).boxed().collect(Collectors.toList());
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值