标签: java-stream

按类别划分和映射java流

这个问题是对类别中的分区java流的一种后续跟进

我有一个stream<A>,在哪里

class A {
  String category();
  String data();
}
Run Code Online (Sandbox Code Playgroud)

我想得到一个map<String, list<String>>,其中原始流基于值被分区为子列表category(),然后映射到仅提取data().使用for循环实现它是非常简单的,但是有可能获得利用java流的更优雅的解决方案吗?

例:

鉴于{[a, xyz], [a, zyx], [b, abc]},我想得到一张地图:

a -> {xyz, zyx}
b -> {abc}
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

0
推荐指数
1
解决办法
381
查看次数

在其迭代过滤器函数中调用IntStream

我正在尝试创建一个素数的无限IntStream,它必须很快 - 在几秒钟内产生大约一百万个素数.所以我尝试创建用过滤器调用IntStream本身生成的流:

IntStream primeStream = IntStream.iterate(2, n -> n + 1)
                .filter(PrimeStream::isPrime);
Run Code Online (Sandbox Code Playgroud)

与isPrime像这样:

public boolean isPrime(int n, IntStream primeStream) {
        primeStream.forEach((p) -> {
            if (n % p == 0)
                return false;
            if (p > Math.sqrt(n))
                break;
        });
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

那可能吗?或者还有其他方式使用Stream来完成我的任务吗?

java recursion java-8 java-stream

0
推荐指数
1
解决办法
109
查看次数

带流的最小值int数组

我正在尝试使用流来获取int数组的最小值,我正在尝试执行以下操作:

public static int smallestInt(int[] args) {
    return Arrays.stream((Arrays.stream(args)
                .boxed().toArray( Integer[]::new ))
                .mapToInt(Integer::intValue).min().getAsInt;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是最好的方法是什么?

PS:有一个类似的问题,但这里没有sterams 使用Java查找基元数组中的最大/最小值

java java-8 java-stream

0
推荐指数
1
解决办法
2680
查看次数

使用Java 8流API进行字符串长度和字符验证

查找输入字符串是否有效 - 条件是字符串length大于5且字符必须是a-z, A-Z or 0-9.

有效的字符串:aA12Z22,qwerty,ABCDEF0

无效:13A,12CrW#,@**=_+

我正在尝试使用它Java 8 streams.我有一个解决方案.问题 - 是否有更好的方法(使用streams)?

boolean valid = Stream.of(string)
    .flatMapToInt(s -> {
        if (s.length() < 5) return IntStream.of(42); // 42 is a '*' char
        else return s.chars();
        })
    .mapToObj(i -> (char) i)
    .allMatch(c -> Character.isLetterOrDigit(c));
System.out.println(valid);
Run Code Online (Sandbox Code Playgroud)

java validation java-stream

0
推荐指数
1
解决办法
3972
查看次数

Java 8中的Comparator.cominging为Map.Entry

给定以下代码:

@Test
public void test7() {
    Map<String, Integer> sortedData = new HashMap<>();
    sortedData.put("One", 1);
    sortedData.put("Two", 2);
    sortedData.put("Three", 3);

    Stream<Map.Entry<String, Integer>> stream = sortedData.entrySet().stream();
    List<String> sorted = stream
            .sorted(Comparator.comparing(Map.Entry::getValue))
            .map(Map.Entry::getKey)
            .collect(Collectors.toList());
} 
Run Code Online (Sandbox Code Playgroud)

它可以成功编译,但是当我更改时

.sorted(Comparator.comparing(Map.Entry::getValue))
Run Code Online (Sandbox Code Playgroud)

至

.sorted(Comparator.comparing(Map.Entry::getValue).reversed())
Run Code Online (Sandbox Code Playgroud)

编译器抱怨 Non static method can't be referenced in static context

我可以想象这是因为getValue不是的静态方法Map.Entry,但是我在这里无法解释问题。

java java-8 java-stream

0
推荐指数
1
解决办法
1722
查看次数

从java列表中提取列表值

public class FetchVarableList {

public static void main(String[] args) {

    List<List<Employee>> empsList = new ArrayList<>();

    Employee e1 = new Employee(1, "Abi", "Fin", 2000);
    Employee e2 = new Employee(2, "Chandu", "OPs", 5000);
    Employee e3 = new Employee(3, "mahesh", "HR", 8000);
    Employee e4 = new Employee(4, "Suresh", "Main", 1000);


    List<Employee> empList = new ArrayList<>();
    empList.add(e1); empList.add(e2); 


    List<Employee> empList2 = new ArrayList<>();

    empList2.add(e3); empList2.add(e4);


    empsList.add(empList);

    empsList.add(empList2);
}
Run Code Online (Sandbox Code Playgroud)

}

上面这段代码是empList2中的emp1,e3,e4中的员工e1,e2列表,这两个员工列表添加到empslist,我想在Integer的单个列表中获取所有员工号码

如何从java8中的一个列表中获取所有员工编号列表

java-8 java-stream

0
推荐指数
1
解决办法
1218
查看次数

如何使用流过滤器和总和

这种方式是使用java流过滤和求和的最有效方法吗?

public static void main(String[] args){
    int[] array = {23,43,56,97,32};
    int sum1 = Arrays.stream(array).boxed().filter(e -> 35 < e).reduce(0,(a,b)->a+b);
}
Run Code Online (Sandbox Code Playgroud)

什么是更好的选择(如果有)以及为什么?

java java-stream

0
推荐指数
1
解决办法
177
查看次数

从java流创建java.util.Enumeration的最佳方法是什么?

我目前最好的解决方案是:

Collections.enumeration(stream.collect(Collectors.toList()))
Run Code Online (Sandbox Code Playgroud)

希望有一个比这更简洁的方法.

java java-8 java-stream

0
推荐指数
1
解决办法
121
查看次数

Java Stream出现次数

我有以下对象的列表.使用StreamAPI,我可以得到User它出现的频率数List吗?

public class User {
    string name;
    int age;
}
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

0
推荐指数
1
解决办法
83
查看次数

Java 8中Lambda嵌套集的错误

我试图使用lambda表达式实现相同但得到错误

for (String id:ids) {
    for (MainGrid ms:grids) {
        for (GridRep innerGrid: ms.getInnerGrid()){
            if(innerGrid.getId().equals(id)){
                finalGrid.add(innerGrid);
                break;
            }
        }
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码在lambda中

for (String id:ids) {
    finalGrid.add(grids.stream().flatMap(ms -> ms.getInnerGrid().stream())
                   .filter(s -> s.getId().equals(id)).findFirst().get());
}
Run Code Online (Sandbox Code Playgroud)

错误:使用传统for()时同样有效,有人可以指导我如何使用lambda实现相同的功能,或者我的代码中是否有一些错过

201-Jan-2018 11:38:29.221 SEVERE [http-apr-9910-exec-8] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service()for servlet [Spring MVC Dispatcher Servlet]与路径的上下文[/ lineManagement]抛出异常[请求处理失败; 嵌套异常是java.util.NoSuchElementException:没有值]带有根本原因java.util.NoSuchElementException:java.util.Optional.get中没有值(Optional.java:135)

java java-8 java-stream

0
推荐指数
1
解决办法
135
查看次数

标签 统计

java-stream ×10

java ×9

java-8 ×8

recursion ×1

validation ×1