数组处理合集
1.Arrays.sort函数使用lambda表达式实现二维数组排序
int[][] pair = new int[][]{{13,4},{2,3},{5,9}};
Arrays.sort(pair, (w, q) -> (q[1] - w[1]));
System.out.println(JSONObject.toJSONString(pair));
运行结果如下:
2.很奇怪,为什么一维数组这么写就会报错呢?
好像是因为不能传入int基本类型,使用Integer就可以
Integer []b = new Integer[]{5,6,7};
Arrays.sort(b,(i1,i2)->(i2-i1));
Arrays.sort()方法说明:
public static <T> void sort(@NotNull T[] a,
@Nullable java.util.Comparator<? super T> c)
快速理解<? extends T>和<? super T>
3.list转换成数组
class Solution {
public int[][] merge(int[][] intervals) {
int len = intervals.length;
if(len==1)
return intervals;
List<int []> result = new ArrayList<int []>();
Arrays.sort(intervals, new Comparator<int[]>() {
public int compare(int[] interval1, int[] interval2) {
return interval1[0] - interval2[0];
}
});
result.add(intervals[0]);
for(int i =1;i<len;i++){
int in = result.size()-1;
int []index=result.get(in);
if(index[1]>=intervals[i][0]&&index[1]<=intervals[i][1]){
index[1]=intervals[i][1];
}
else if(index[1]<intervals[i][0]){
result.add(intervals[i]);
}
}
return result.toArray(new int[result.size()][]);
}
}
List<Integer> lk = new ArrayList<Integer>();
lk.toArray(new Integer [3]);