有人可以建议,为什么我不能在这里应用方法参考?
工作代码。
System.out.println(
Arrays.stream(str.split(" "))
.collect(Collectors.groupingBy(Function.identity(),Collectors.counting())));
Run Code Online (Sandbox Code Playgroud)
编译错误,无法解析方法
System.out.println(
Arrays.stream(str.split(" "))
.collect(Collectors.groupingBy(Function::identity,Collectors::counting)));
Run Code Online (Sandbox Code Playgroud) 如果我想从表中获取数据并稍后对其进行过滤,是否比运行有条件的 MySQL 查询更好?
例子 -
list.stream.filter(x-> x.getSalary() > baseSalary).collect(Collectors.toList());
select * from employees where salary > 10000;
, 通过 JPA 运行此查询。
哪个更快?我们应该依赖数据库引擎来获得更快的结果还是在我们的代码中处理它会更好。以上只是一个例子,请不要认为这是实时的。
我正在尝试生成一个随机的整数列表,如下所示:
private static int nextElement() {
Random r = new Random();
return r.nextInt(100);
}
public static void main(String[] args) {
Integer[] integers = Stream.generate(nextElement())
.limit(200)
.toArray(Integer[]::new);
}
Run Code Online (Sandbox Code Playgroud)
该错误在 下显示为红色波浪线generate,说明如下:
The method generate(Supplier<? extends T>) in the type Stream is not
applicable for the arguments (int)
Run Code Online (Sandbox Code Playgroud)
我认为这意味着for的返回类型nextElement()不能是 an int,但我可能错了。如何修复此代码,以便可以生成随机整数列表?
我有一组 String 并且想将它们中的每一个映射到一个空列表然后返回。我知道 for 循环可以解决它,但是有没有使用 Java Stream 的好方法?
例如:我有一组 {"a", "b", "c"}
我想返回一张地图Map<String, List<Object>>,就像{"a": emptyList(), "b": emptyList(), "c": emptyList()}
我有一个枚举我通话Permission的安全权限,此事对我的申请。在数据库中,用户可能拥有与我的应用程序无关的其他权限。从数据库读取用户时,我得到 aList<String>并且我想建立 a List<Permission>,忽略那些不是枚举值的字符串。
public enum Permission { ADMIN, USER }
List<String> plaintextAuthorities = List.of("ADMIN","USER","COFFEEMAKER")
List<Permission> appPermissions = plaintextAuthorities.stream()
.map(Permission::valueOf) // this will throw an IllegalArgumentException for 'COFFEEMAKER'
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
问题是该map步骤在到达与枚举值不对应的字符串之一时将引发异常。我怎样才能filter去掉这些值,以便在不抛出异常的情况下悄悄地忽略它们?
名单是: Arrays.asList("Za", "ab", "AB", "Sa", "1ab", "Ab", "!Ab");
如果我用stream().sorted()那么命令是:!Ab 1ab AB Ab Za ab--> 前面的ab不应该za。
如果我用sorted(String.CASE_INSENSITIVE_ORDER)那么顺序是!Ab 1ab ab AB Ab Za--> 这个时候,AB在ab后面。
有什么方法可以将这两个规则结合起来,以便我们按字母顺序排列列表并且大写大于小写?
添加示例:1AB - A0B - AbD - aBD - abd1 - ZAB
按字母顺序排序(Z 永远不会在 a 前面)和数字 > 大写 > 小写 ( AbD > aBD)
How can I filter map of map using java stream. I can do it using double loop but I think this is not efficient.
public class MapUsage {
static Map<Integer, Map<Integer, String>> parentMap = new HashMap<>();
static Map<String, String> userRole = new HashMap<>();
public static void main(String ... args){
initializeData();
displayMapForUser("user1", parentMap);
// printMap(parentMap);
}
private static void displayMapForUser(String user1, Map<Integer, Map<Integer, String>> parentMap) {
Integer role = new Integer(userRole.get(user1));
Map<Integer, Map<Integer, String>> userMap = new HashMap<>();
Map<Integer, String> childMap …Run Code Online (Sandbox Code Playgroud) public static void main(String[] args) {
System.out.println(hasPairWithSum(new int[] { 12, 4, 3, 4, 1, 7 }, 9));
System.out.println(hasPairWithSum2(new int[] { 12, 4, 3, 4, 1, 7 }, 9));
System.out.println(hasPairWithSum3(new int[] { 12, 4, 3, 4, 1, 7 }, 9));
}
public static boolean hasPairWithSum(int[] intArray, int sum) {
int len = intArray.length;
for (int i = 0; i < len - 1; i++) {
for (int j = i + 1; j < len; j++) {
if (intArray[i] + intArray[j] …Run Code Online (Sandbox Code Playgroud) 我想将列表转换为地图,其中键只是一个计数器,它需要遵守列表的顺序。我目前有这个代码:
private static Map<String, String> convertListToMap(final List<String> list) {
AtomicInteger counter = new AtomicInteger(0);
Map<String, String> map = list.stream().collect(Collectors.toMap((c) -> {
Integer integer = counter.incrementAndGet();
return integer.toString();
}, (c) -> c));
return map;
}
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
假设我有以下课程:
class A {
int id;
List<B> b;
}
class B {
int id;
}
Run Code Online (Sandbox Code Playgroud)
我想在 A.id 到 B.id 列表(Map<Integer, List<Integer>>,其中 key = A.id,并List<Integer>对应于每个 A 的 B.id 字段列表)之间创建一个映射。我尝试了Collectors.groupingBy和 的各种组合Collectors.mapping,但没有效果。有人可以帮我吗?