一些常用小技巧,持续更新
1)array初始化非0值,fill
int[] ans = new int[5];
//快速填充数组初始值
Arrays.fill(ans, -1);
2) array转list
a. 首先可以直接用asList
eg:
Arrays.asList(strArray)
PS:这种有个弊端的到的list并不能调用add
b. so,再包一层
通过asList转化后的list,再生成list
ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;
c. array通过stream转list , 一步到位,需要boxed
List<Integer> numList = Arrays.stream(nums).boxed().collect(Collectors.toList());
numList.add(6); //可以add
numList.stream().forEach(System.out::println);
3)list转array
a. 直接调用toArray返回的是Object数组
todo...
4)一些长度
a. 对于字符串获取长队是个方法length()
b. 对于数组获取长度是个属性length
c. Map、List和Set这些集合类使用size()
5)没有(item,index)=>{}
替换方案:
for循环获取index,然后再通过中括号或者get取
或者forin的到item,再通过indexOf取下标
6)类型判断
System.out.println(numList instanceof List);
//等效于
System.out.println(List.class.isInstance(numList));
7)System.arraycopy
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src:源数组;
srcPos:源数组要复制的起始位置;
dest:目的数组;
destPos:目的数组放置的起始位置;
length:复制的长度.
8)list和array的排序反转
无论是list还是array,内置的方法是对原值操作,返回为void
a、list排序和反转
Collections.sort
Collections.reverse
b、array的排序和反转
Arrays.sort
Array的reverse需要自己去实现,当然也可以先转List,再借助List的方法
9)list和array的toString
对于一些封装类和高级类型,直接可以用生成实例来直接,
因为这类封装类本身已经继承并实现了toString方法
而array需要借助于工具类Arrays.xxx去操作
so:
list可以直接在实例上toString
list实例.toString();
---
array需要借助工具类继承实现的toString方法来转化
Arrays.toString(array实例)
10)list和array的截取
返回值为截取的类型,主要是起止节点,左闭右开
a、首先是list的截取,list.subList
List<Integer> pre = new ArrayList<>(list.subList(0, mid));
b、然后是array的截取,Arrays.copyOfRange,也是实现在Arrays工具类上
int[] a = new int[]{1,2,3,4,5};
int[] b = Arrays.copyOfRange(a, 0, 2);