Tag: java stream

将<String,List >映射到Pair

使用Java 8 Stream API如何将一个Map到一Pair列表,其中左对值是映射键? 示例:如果给定地图是 1 => {1, 2, 3} 2 => {2, 4} 然后所需的输出是五对流: (1,1) , (1,2) , (1,3) , (2,2) , (2,4)

使用Java 8 Stream API进行计数和排序

我想知道如何通过COUNT然后ASC订购。 Stream fruits = Stream.of(“apple”, “orange”, “ananas”); Map letters = fruits.map(w -> w.split(“”)) .flatMap(Arrays::stream) .collect(groupingBy(identity(), counting())); 输出: {p=2, a=5, r=1, s=1, e=2, g=1, l=1, n=3, o=1}` 期望的输出: {a=5, n=3, e=2, p=2, g=1, l=1, r=1, s=1, o=1}

Java 8 Streams:如何调用Collection.stream()方法并检索多个聚合值的数组

我从Java 8中的Stream API开始。 这是我使用的Person对象: public class Person { private String firstName; private String lastName; private int age; public Person(String firstName, String lastName, int age) { this.firstName = firstName; this.lastName = lastName; this.age = age; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } public int getAge() { return age; […]

在包含Streams的2D列表的修改列表中包含未修改列表中的元素

我问这个问题是关于对1D列表做同样的事情,认为将答案应用于2D列表会很容易,但事实并非如此。 基于Holger的答案我的代码,我提出了这个解决方案: //list is of type ArrayList<List> list.stream() .map(l -> Stream.concat( l.subList(0, l.size() – 1).stream().map(i -> i – 2), Stream.of(l.get(l.size() – 1)).collect(Collectors.toList()) )) .collect(Collectors.toList()); 我得到编译时错误Cannot infer type argument(s) for map(Function) ,但是,当我尝试这个时。 如何在2D列表上执行此function? 一些示例输入和输出: [[1, 2, 3, 4], [5, 6, 7, 8]]应输出[[-1, 0, 1, 4], [3, 4, 5, 8]]

使用Java 8 Stream API根据ID和日期过滤对象

我有一个Contact类,每个实例都有一个唯一的contactId 。 public class Contact { private Long contactId; … other variables, getters, setters, etc … } 还有一个Log类,详细说明了Contact在某个lastUpdated日期执行的action 。 public class Log { private Contact contact; private Date lastUpdated; private String action; … other variables, getters, setters, etc … } 现在,在我的代码中,我有一个List ,它可以包含一个Contact多个Log实例。 我想根据Log对象中的lastUpdated变量过滤列表,为每个Contact只包含一个Log实例。 结果列表应包含每个Contact的最新Log实例。 我可以通过创建Map<Contact, List> ,然后循环并获取每个Contact max lastUpdated变量的Log实例来实现这一点,但这似乎可以通过Java 8 Stream API更简单地完成。 如何使用Java 8 Stream […]

检索按值排序的地图中条目周围的固定数量的条目

POJO即。 Entry.java表示排行榜中的条目。 排名是排行榜中的位置,1是得分最高的用户 public class Entry { private String uid; private int score; private int position; @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + score; result = prime * result + ((uid == null) ? 0 : uid.hashCode()); return result; } @Override public […]

在单个流上组合allMatch,noneMatch和anyMatch

我想有以下逻辑:(我知道它不起作用,因为它不止一次地消耗流)。 但我不知道如何实现它。 Stream buffers = super.getBuffers().stream(); if (buffers.allMatch(b -> b.position() > 0)) { return OutgoingMessageStatus.FULLY_SENT; } else if (buffers.noneMatch(b -> b.position() > 0)) { return OutgoingMessageStatus.WAS_NOT_SENT; } else { return OutgoingMessageStatus.PARTIALLY_SENT; } 我怎样才能做到这一点?

映射到List

我正在尝试使用lambdas将Map转换为List 。 基本上我想将键和值连接起来,并在它们之间加上’=’ 。 这似乎微不足道,但我找不到如何做到这一点。 例如 Map map = new HashMap(); map.put(“a1″,”b1”); map.put(“a2″,”b2”); map.put(“a3″,”b3”); // Lambda // Result contains [“a1=b1”, “a2=b2”, “a3=b3”] List result;

Java 8 Collection和stream / forEach

在使用Collection时,有没有理由在forEach调用之前专门插入流/并行流? 例: Collection foo; foo.forEach(); // Goes through every item in foo foo.stream().forEach(); // Does stream make a difference here foo.parallelStream().forEach(); // Does this make a difference here? 谢谢

如何使用lambda获取哈希映射中值的键数

我有一个哈希映射 Map<Integer, List> Directmap = new HashMap<Integer, List>() {{ put(0, Arrays.asList(a, b)); put(1, Arrays.asList(b, c)); put(2, Arrays.asList(d)); put(3, Arrays.asList(d, e)); put(4, Arrays.asList(e)); put(5, Arrays.asList()); }}; Directmap: {0=[a, b], 1=[b, c], 2=[d], 3=[d, e], 4=[e], 5=[]} 我想计算每个值的键数。 例如: “a”有一个键, “b”有两个键,……, “e”有两个键,即3和4。 我试过这样的事情: Map ex = Directmap.entrySet().stream() .collect(Collectors.groupingBy(e -> e.getKey(), Collectors.counting())); 我想要以键数作为输出的值。 喜欢这个 : a=[1], b=[2], c=[1], […]