Tag: java 8

使用Java8将Map <String,NavigableMap <Long,Collection >>转换为List

我试图将Map<String, NavigableMap<Long, Collection>>转换为List Java 8。 我写了一些代码,但在中间卡住了一些。 userTopics.values().stream().map( new Function<NavigableMap<Long, Collection>, Collection>() { @Override public Collection apply(NavigableMap<Long, Collection> t) { return null; //TODO } } );

将<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; […]

使用IntStream的flatMap方法打印2D数组

我有一个我想用IntStream打印的2D数组。 这是arrays, int[][] twoD = { { 1, 2 }, { 3, 4 }, { 5, 6 } }; 现在,使用嵌套循环,这可以像, for (int i = 0; i < twoD.length; i++) { for (int j = 0; j < twoD[i].length; j++) { System.out.println(twoD[i][j]); } } 但我想使用IntStream 。 我最近了解了它可以用来实现它的flatMap方法,所以我尝试了这个, IntStream.range(0, twoD.length) .flatMap(j -> IntStream.range(0, twoD[j].length)) .forEach(System.out::print); 它输出010101 。 […]

更新到JDK8后,JSP中出现编译错误:“java.lang.CharSequence类型无法解析”

我最近将我的JDK版本更新为8.我有一段代码如下: StringBuilder abc = new StringBuilder(); abc.append(“123”); 当我运行它时,它抛出错误: The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files 我已经更新了JDK的所有依赖项,但注意到了帮助。

在包含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 1.8时间function

所以Java 1.8附带了一大堆新的(和旧的)类来管理时间计算: java.time.Instant , java.time.LocalTime , java.time.temporal.ChronoUnit ,以及更多…… 但为什么没有简单的方法来计算其中任何一个之间的时差? 我希望“time_later – time_earlier”是最常用的时间操纵,但这是无处可见的。 我无法从另一个中减去一个LocalTime并获得一个新的LocalTime; 我不能从另一个中减去一个瞬间来获得一个新的瞬发。 相反,我必须摆弄ChronoUnits.between,以及长毫秒和其他什么来实现这个非常有用的东西。 为什么是这样? 必须要发生一些我没有得到的事情? 或者我只是愚蠢……?

使用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 […]