SOU*_*E77 1 java arrays lambda
我必须按字母顺序对数组中的每个项目进行排序
输入: [bcdef、dbaqc、abcde、omadd、bbbbb] 输出: [bcdef、abcdq、abcde、addmo、bbbbb]
我写了下面的代码,但我觉得它很冗长(长)。
您能告诉我另一种方式,用更短的代码吗?
谢谢。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import static java.lang.String.copyValueOf;
public class Main {
public static void main(String[] args) {
String[] stringsArray = { "bcdef", "dbaqc", "abcde", "omadd", "bbbbb"};
System.out.println(Arrays.toString(stringsArray));
List<String> list = Arrays.stream(stringsArray).map((String s)->{
char[] charArray = s.toCharArray();
Arrays.sort(charArray);
return copyValueOf(charArray);
}).collect(Collectors.toList());
ArrayList<String> arrayList = new ArrayList<String>(list);
stringsArray = Arrays.copyOf(arrayList.toArray(),arrayList.size(),String[].class);
System.out.println(Arrays.toString(stringsArray));
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想就地修改原始数组,那么您可以依赖Arrays.asList()
,它会List
在数组周围创建一个包装器:
Arrays.asList(stringsArray)
.replaceAll(s -> {
char[] chars = s.toCharArray();
Arrays.sort(chars);
return new String(chars);
});
System.out.println(Arrays.toString(stringsArray));
Run Code Online (Sandbox Code Playgroud)
Arrays.asList()
实际上只是原始数组的视图。对返回列表的任何更改实际上都会在数组上完成,反之亦然。这也是您无法在返回列表上添加/删除元素的原因。
归档时间: |
|
查看次数: |
141 次 |
最近记录: |