如何将一个数组转换为另一个数组?
How to vonvert an array to another array?
我正在将 Strings
的数组转换为 MyStrings
的数组。
String[] arystrs = { "abc", "xyz" };
MyString[] arymystrs = new MyString[this.arystrs.length];
for (int i = 0; i < arystrs.length; i++) {
arymystrs[i] = new MyString(arystrs[i]); // convert by constructor
}
除此之外还有更优雅的解决方案(例如 collections/streams)吗?
我知道 stream/map/collect 正在处理集合(列表、地图),但不确定它如何处理数组。
Class::
class MyString {
private String string;
public MyString(String string) {
this.string = string;
}
}
一行使用流,
MyString[] objects = Arrays.stream(arystrs).map(MyString::new).toArray(MyString[]::new);
使用 Arrays.stream() 将数组转换为流,映射以创建 class MyString 的对象并转换为数组。
var myStrings = List.of(arystrs).stream().map(str -> new MyString(str)).collect(Collectors.toList());
/**
*Converts array to list and then stream over. Map each element to MyString. Collect that back to list.
**/
这将 return 列出可能存在一些语法问题,因为它只是键入而没有任何 ide。如果需要,对于转换后的列表,还有一个 .toArray() 用于数组转换。
MyString[] myStringsArray = myStrings.toArray(MyString[]::new);
您可以使用流:
class MyString {
private final String str;
public MyString(String str) {
this.str = str;
}
}
String[] arystrs = { "abc", "xyz" };
MyString[] arymystrs = Arrays.stream(arystrs).map(MyString::new).toArray(MyString[]::new);
我正在将 Strings
的数组转换为 MyStrings
的数组。
String[] arystrs = { "abc", "xyz" };
MyString[] arymystrs = new MyString[this.arystrs.length];
for (int i = 0; i < arystrs.length; i++) {
arymystrs[i] = new MyString(arystrs[i]); // convert by constructor
}
除此之外还有更优雅的解决方案(例如 collections/streams)吗?
我知道 stream/map/collect 正在处理集合(列表、地图),但不确定它如何处理数组。
Class::
class MyString {
private String string;
public MyString(String string) {
this.string = string;
}
}
一行使用流,
MyString[] objects = Arrays.stream(arystrs).map(MyString::new).toArray(MyString[]::new);
使用 Arrays.stream() 将数组转换为流,映射以创建 class MyString 的对象并转换为数组。
var myStrings = List.of(arystrs).stream().map(str -> new MyString(str)).collect(Collectors.toList());
/**
*Converts array to list and then stream over. Map each element to MyString. Collect that back to list.
**/
这将 return 列出可能存在一些语法问题,因为它只是键入而没有任何 ide。如果需要,对于转换后的列表,还有一个 .toArray() 用于数组转换。
MyString[] myStringsArray = myStrings.toArray(MyString[]::new);
您可以使用流:
class MyString {
private final String str;
public MyString(String str) {
this.str = str;
}
}
String[] arystrs = { "abc", "xyz" };
MyString[] arymystrs = Arrays.stream(arystrs).map(MyString::new).toArray(MyString[]::new);