小编Tag*_*eev的帖子

java8 stream - 过滤地图和聚合

可以说我有一个房间列表

List<Room> rooms;
Run Code Online (Sandbox Code Playgroud)

每个房间都有人员名单.

使用java8流我想迭代房间列表,获取所有人,在每个节点上执行一些方法(doSomething())并获得所有过滤对象的列表.

这是使用java 8的最佳实践吗?

List<Asset> pesonsList= new ArrayList<>();
for (Room room : rooms) 
     room.getPersonsList().stream()
                       .filter(person -> person.isTall())
                       .forEach(person -> {
                               doSomething(person);
                               pesonsList.add(person);
                       });
Run Code Online (Sandbox Code Playgroud)

java-8 java-stream

2
推荐指数
1
解决办法
907
查看次数

Java Stream BufferedReader文件流

我正在使用Java 8 Streams从csv文件创建流.我正在使用BufferedReader.lines(),我阅读了以下文档BufferedReader.lines():

在执行终端流操作之后,不能保证读取器将处于从中读取下一个字符或行的特定位置.

public class Streamy {
    public static void main(String args[]) {
        Reader reader = null;
        BufferedReader breader = null;
        try {
            reader = new FileReader("refined.csv");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        breader = new BufferedReader(reader);
        long l1 = breader.lines().count();
        System.out.println("Line Count " + l1); // this works correctly

        long l2 = breader.lines().count();
        System.out.println("Line Count " + l2); // this gives 0
    }
}
Run Code Online (Sandbox Code Playgroud)

它看起来像是第一次读取文件后,读者无法进入文件的开头.解决这个问题的方法是什么?

bufferedreader java-8 java-stream

2
推荐指数
1
解决办法
4149
查看次数

一行检查String是否包含bannedSubstrings

我有一个String title和一个List<String> bannedSubstrings.现在我想执行一行检查是否title没有bannedSubstrings.

我的方法:

if(bannedSubstrings.stream().filter(bannedSubstring -> title.contains(bannedSubstring)).isEmpty()){
    ...
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有isEmpty()流的方法.那你怎么解决这个问题呢?有一线解决方案吗?

java string lambda java-8 java-stream

2
推荐指数
1
解决办法
693
查看次数

计算要列出的字符串映射中的所有元素

有没有更好的方法来计算地图中所有列表的大小?那么firstList.size() + secondList.size()?我已经这样做了,但创建一个仅用于计数的列表并不是正确的方法..

public static void main(String[] args) {
    List<String> firstList = new ArrayList<>();
    firstList.add("first");
    List<String> secondList = new ArrayList<>();
    secondList.add("second");

    Map<String, List<String>> myMap = new HashMap<>();
    myMap.put("one", firstList);
    myMap.put("two", secondList);

    int size = myMap.entrySet().stream()
                               .map(entry -> entry.getValue())
                               .flatMap(list -> list.stream())
                               .collect(Collectors.toList())
                               .size();
    System.out.println("Size of all elements in map is:" + size);
}
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

2
推荐指数
1
解决办法
3179
查看次数

使用java流将List <int []>更改为Map <int [],int []>

假设我有一个

List<int[]> input = ( {1,2,3}, {1,2,4}, 
                {1,2,7}, {1,3,1}, {2,2}, 
                {1,2,8}, {1,3,4}, {2,3})
Run Code Online (Sandbox Code Playgroud)

我需要把它转换成

Map<int[] , int[]> result = { [{1,2} -> {3,4,7,8}] ,
                    [{1,3} -> {1,4}] , 
                    [{2} -> {2,3}]   }
Run Code Online (Sandbox Code Playgroud)

有效地,映射的关键是常见值,直到数组长度为2,值应包含所有这些数组的最后一个元素.

有人可以建议我如何使用java流来获取它,因为在正常的循环中,所有这些都是非常复杂的事情吗?

java java-8 java-stream

2
推荐指数
1
解决办法
75
查看次数

generic:extends Number&Comparable Basic Understanding

class  MyTest<K,V extends Number & Comparable> implements Comparable<MyTest>{

    private K key;
    private V value;

}
Run Code Online (Sandbox Code Playgroud)

这是什么意思K, V extends Number & Comparable?在上面的语句MyTest中实现了一个类似的接口,但我无法弄清楚K,V为什么有Number&Comparable.k,v不是接口.有人可以就此启发我.

java generics

2
推荐指数
1
解决办法
260
查看次数

在java age计算中返回错误的值

在java中我想计算年龄..

我正在使用"jodatime.jar"

LocalDate today = LocalDate.now();
LocalDate birthdate = new LocalDate ("1990-12-12");
Years age = Years.yearsBetween(birthdate, today);
Run Code Online (Sandbox Code Playgroud)

我希望年龄为integer......它像P25Y那样返回值.如何得到年龄的整数值......我只想要25岁

有没有其他方法来获得日期格式的java年龄..在谷歌我已经尝试了很多,但没有找到任何使用日期格式的正确示例

java jodatime

2
推荐指数
1
解决办法
155
查看次数

Java List <Map <String,Long >>映射键的组合之和

我有一个: List<Map<String, Long>> items = new ArrayList<>();

我想得到一个Map,其中键被分组,值是总和.

示例:列表

  • 项目0
    • foo - > 1
    • 吧 - > 2
  • 第1项
    • foo - > 4
    • 吧 - > 3

结果:地图

  • foo - > 5
  • 吧 - > 5

我知道如何以"长"方式执行此操作,但尝试使用java 8功能发现lambda/streaming/groupby方法.有什么想法吗?

java lambda java-8 java-stream

2
推荐指数
1
解决办法
2820
查看次数

将哈希图拆分为Java 8中的分区

我有哈希图: Map<String, Set<String>> myMap

我想将其拆分为包含Map以下内容的列表:

List<Map<String,Set<String>>> listofMaps;
Run Code Online (Sandbox Code Playgroud)

,每张地图最多可包含100个键。我知道如何以常规方式执行此操作。(在entryset上进行foreach,每100个项目会创建一个新地图)。有什么选择可以用Java 8 lambda或其他东西吗?(有点像Lists.partitions()..)?

java collections hashmap java-8

2
推荐指数
1
解决办法
7984
查看次数

使用流操作基于条件在Java中将List转换为Map

我正在尝试转换ListHashMap使用流.这是我的代码..

attributeUnitMap = attributesList.stream()
    .filter(a -> a.getAttributeUnit() != null)
    .collect(Collectors.toMap(Attribute::getAttributeName, a -> a.getAttributeUnit()));
Run Code Online (Sandbox Code Playgroud)

现在我想添加条件,如果我得到属性名称null,那么应该将项目添加到带有空白字符串的map中,如下所示(any_attributeName,"").

如何使用流操作实现此目的.我知道我可以通过使用过滤条件来检查属性名称是否为null但是如果它为null则可以添加空字符串.可能吗?如果没有,为什么呢?请帮忙.

java dictionary list java-8 java-stream

2
推荐指数
1
解决办法
1820
查看次数