这个问题是对类别中的分区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) 我正在尝试创建一个素数的无限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来完成我的任务吗?
我正在尝试使用流来获取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查找基元数组中的最大/最小值
查找输入字符串是否有效 - 条件是字符串
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) 给定以下代码:
@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,但是我在这里无法解释问题。
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流过滤和求和的最有效方法吗?
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)
什么是更好的选择(如果有)以及为什么?
我目前最好的解决方案是:
Collections.enumeration(stream.collect(Collectors.toList()))
Run Code Online (Sandbox Code Playgroud)
希望有一个比这更简洁的方法.
我有以下对象的列表.使用StreamAPI,我可以得到User它出现的频率数List吗?
public class User {
string name;
int age;
}
Run Code Online (Sandbox Code Playgroud) 我试图使用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)