1.数组转List
1.1. Arrays.asList
public class Tesr
{
public static void main(String[] args) {
String[] ary = new String[]{ "1", "a"};
List list = Arrays.asList((ary));
list.add("ddsdsa");
System.out.println(list);
}
}
但是这样写出来的代码是错误的,会出现如下错误:
这是因为用Arrays.asList转的ArrayList 全路径为 java.util.Arrays.ArrayList , 不支持 add , remove 等操作,这个ArrayList 和咱们常见的不是同一个。
下面是正确的数组转list并且还可以对list进行操作的写法。
public class Tesr
{
public static void main(String[] args) {
String[] ary = new String[]{ "1", "a"};
List list = new ArrayList<>(Arrays.asList((ary)));
list.add("ddsdsa");
System.out.println(list);
}
}
这个是转换的时new一个ArrayList就可以了。
2.list转数组
list.toArray
public static void main(String[] args) {
List list = Arrays.asList("a", "b", "c");
String[] strings = list.toArray(new String[]{});
for(String s:strings){
System.out.println(s);
}
}
如果需要指定数据类型,需要传参指定,如上述代码中数组类型为String,则list.toArray中的类型为String数组类型。
3.字符串转list
借助 Collections.addAll 来实现
public static void main(String[] args) {
String str = "a,d,f,gf,d,d,f,g,e,er,f,v";
List list = new ArrayList<>();
Collections.addAll(list, str.split(","));
System.out.println(list);
}
上述是只适用于String类型的写法,只能输出String类型的列表。如果想要改变分隔符可以根据自己的需要在split中进行修改。
如果想要生成的列表为int类型的列表,则可以使用如下的方法:
public static void main(String[] args) {
String str = "1,2,3,4,5,678,3,4,5,6";
List collect = Stream.of(str.split(","))
.map(String::trim)
.filter(s -> !s.isEmpty())
.map(Integer::valueOf).collect(Collectors.toList());
System.out.println(collect);
}
但是记住字符串中分隔符分割的必须是数字。
4.list转字符串
4.1使用StringBuilder编写
#String类型的列表
public static void main(String[] args) {
List list=new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
StringBuilder builder = new StringBuilder();
for (String str: list) {
builder.append(str).append(",");
}
System.out.println(builder.substring(0, builder.length() - 1));
}
#Integer类型的列表
public static void main(String[] args) {
List list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
StringBuilder builder = new StringBuilder();
for (Integer str: list) {
builder.append(str).append(",");
}
System.out.println(builder.substring(0, builder.length() - 1));
}
4.2使用stream流编写
#String类型的列表
public static void main(String[] args) {
List list=new ArrayList<>();
list.add("a");
list.add("b");
list.add("v");
System.out.println(list.stream().map(String::valueOf).collect(Collectors.joining(",")));
}
#Integer类型的列表
public static void main(String[] args) {
List list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
System.out.println(list.stream().map(String::valueOf).collect(Collectors.joining(",")));
}
5.Map互转
将一个 Map
public static void main(String[] args) {
Map map = new HashMap<>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
map.put("d",4);
Map ans = map.entrySet().stream().collect(
Collectors.toMap(Map.Entry::getKey, s -> String.valueOf(s.getValue()), (a,b) -> a));
System.out.println(ans);
}
6.函数方法在二维数组中找到偶数
#共用方法
public static void scan(int maxX, int maxY, BiConsumer consumer) {
for (int i = 0; i < maxX; i++) {
for (int j = 0; j < maxY; j++) {
consumer.accept(i, j);
}
}
}
public static void main(String[] args) {
int[][] cells = new int[][]{{1, 2, 3, 4}, {11, 12, 13, 14}, {21, 22, 23, 24}};
List ans = new ArrayList<>();
scan(cells.length, cells[0].length, (i, j) -> {
if ((cells[i][j] & 1) == 0) {
ans.add(cells[i][j]);
}
});
System.out.println(ans);
}