Java 每个循环的Lambda表达式

Java 每个循环的Lambda表达式,java,lambda,Java,Lambda,我想知道如何将以下lambda表达式转换为for each循环: private static List<GrantedAuthority> mapToGrantedAuthorities(List<Authority> authorities) { return authorities.stream() .map(authority -> new SimpleGrantedAuthority(authority.getName().

我想知道如何将以下lambda表达式转换为for each循环:

private static List<GrantedAuthority> mapToGrantedAuthorities(List<Authority> authorities) {
    return authorities.stream()
            .map(authority -> new SimpleGrantedAuthority(authority.getName().name()))
            .collect(Collectors.toList());
}
private static List mapToGrantedAuthorities(列表权限){
returnauthorities.stream()
.map(authority->new SimpleGrantedAuthority(authority.getName().name())
.collect(Collectors.toList());
}
应该有效:

List List=new ArrayList();
适用于(授权人:授权人)
添加(新的SimpleGrantedAuthority(auth.getName().name());
退货清单;

我猜您正在使用低于1.8的java,这就是为什么要这样做,它可能也更快。

Lambda表达式的基础是Lambda只使用一个方法获取一个类,在这种情况下,它使用流执行foreach循环,并且正在使用传入的列表中的名称创建一个新的SimpleGrantedAuthority,然后返回另一个权限列表

List<GrantedAuthority> granted = new ArrayList<GrantedAuthority>();
for( Authority auth : authorities)
{
    granted.add(new SimpleGrantedAuthority(auth.getName().name()));
}
return granted;
因此,它需要一份权威列表,并返回相同的列表,但作为授权的权威

List<GrantedAuthority> granted = new ArrayList<GrantedAuthority>();
for( Authority auth : authorities)
{
    granted.add(new SimpleGrantedAuthority(auth.getName().name()));
}
return granted;
List=new ArrayList();
适用于(授权人:授权人)
{
grated.add(新的SimpleGrantedAuthority(auth.getName().name());
}
给予回报;

您还可以使用Google Guava()更接近以前Java版本中的Java 8样式:

private static List<GrantedAuthority> mapToGrantedAuthorities(final List<Authority> authorities) {
    return Lists.transform(authorities, new Function<Authority,GrantedAuthority>(){
        @Override
        public GrantedAuthority apply(Authority authority) {
            return new SimpleGrantedAuthority(authority.getName().name());
        }
    });
}
private static List mapToGrantedAuthorities(最终列表权限){
return list.transform(权限,新函数(){
@凌驾
公共授权申请(授权){
返回新的SimpleGrantedAuthority(authority.getName().name());
}
});
}

为什么要这样做?因为我使用的是JAVA 1.6,我可能只是误解了你答案的第一句话,但是Lambda表达式可以接受任意数量的参数。很抱歉,我没有说清楚,大多数简单的Lambda调用都依赖于函数接口,函数接口只有一个抽象方法。-对不起,我混淆了方法和参数。