第一次做力扣,最简单难度的第一题,做了两个小时。。。
题目逻辑很简单,主要困难在于不了解 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());