如何检索此列表的 n 个大小元素?
How can I retrieve the n size elements of this list?
我有以下代码检索 getNames.get(x)
中的值,getNames()
的类型为 List<String>
。要求是根据 getNames()
的大小创建一个帐户。这可以从 1 到 x 不等,所以与其写在下面,我如何使用流来适应这个?如果做不到这一点,也许一个循环就足够了。最终结果应该以getNames()
的大小为准,createAccount()
被调用的次数相同
public List<Account> buildAccounts(MetaData metaData){
return List.of(
createAccount(metaData.getNames().get(0)),
createAccount(metaData.getNames().get(1)),
createAccount(metaData.getNames().get(2)));
}
public Account createAccount(String name){
....
}
可以使用metaData.getNames().stream.collect(Collectors.counting());
计算长度
看起来很适合map
。
public public List<Account> buildAccounts(MetaData metaData){
return metaData.getNames().stream()
.map(n -> createAccount(n))
.collect(Collectors.toList());
}
顺便说一句
The length can be calculated using
metaData.getNames().stream.collect(Collectors.counting());
当您可以简单地执行 metaData.getNames().size()
.
时,这会很奇怪
您可以使用 Stream#map
。
Returns a stream consisting of the results of applying the given function to the elements of this stream.
return metaData.getNames().stream()
.map(name -> createAccount(name)).collect(Collectors.toList());
在Java 16+中,collect
调用可以缩短为.toList()
。
对于列表的大小你可以使用size()
方法metaData.getNames().size();
用于创建帐户
public List<Account> buildAccounts(MetaData metaData) {
return metaData.getNames()
.stream()
.map(this::createAccount)
.collect(Collectors.toList());
}
for-each 循环的另一种方法(增强的 for 循环)
public List<Account> buildAccounts(MetaData metaData) {
List<String> names = metaData.getNames();
List<Account> accounts = new ArrayList<>(names.size());
for (String name : names) {
var account = createAccount(name);
accounts.add(account);
}
return accounts;
}
我有以下代码检索 getNames.get(x)
中的值,getNames()
的类型为 List<String>
。要求是根据 getNames()
的大小创建一个帐户。这可以从 1 到 x 不等,所以与其写在下面,我如何使用流来适应这个?如果做不到这一点,也许一个循环就足够了。最终结果应该以getNames()
的大小为准,createAccount()
被调用的次数相同
public List<Account> buildAccounts(MetaData metaData){
return List.of(
createAccount(metaData.getNames().get(0)),
createAccount(metaData.getNames().get(1)),
createAccount(metaData.getNames().get(2)));
}
public Account createAccount(String name){
....
}
可以使用metaData.getNames().stream.collect(Collectors.counting());
看起来很适合map
。
public public List<Account> buildAccounts(MetaData metaData){
return metaData.getNames().stream()
.map(n -> createAccount(n))
.collect(Collectors.toList());
}
顺便说一句
The length can be calculated using
metaData.getNames().stream.collect(Collectors.counting());
当您可以简单地执行 metaData.getNames().size()
.
您可以使用 Stream#map
。
Returns a stream consisting of the results of applying the given function to the elements of this stream.
return metaData.getNames().stream()
.map(name -> createAccount(name)).collect(Collectors.toList());
在Java 16+中,collect
调用可以缩短为.toList()
。
对于列表的大小你可以使用size()
方法metaData.getNames().size();
用于创建帐户
public List<Account> buildAccounts(MetaData metaData) {
return metaData.getNames()
.stream()
.map(this::createAccount)
.collect(Collectors.toList());
}
for-each 循环的另一种方法(增强的 for 循环)
public List<Account> buildAccounts(MetaData metaData) {
List<String> names = metaData.getNames();
List<Account> accounts = new ArrayList<>(names.size());
for (String name : names) {
var account = createAccount(name);
accounts.add(account);
}
return accounts;
}