标签: java-stream

Java 8遍历列表并存储在Map中

List<String> list =new ArrayList<>();
list.add("abcd");
list.add("afsd");
list.add("addd");

Map<String, List<Person>> ordersByInstrumentId = findService.findAllUsers(**list.get(0)**)
                        .stream()
                        .collect(Collectors.groupingBy(Dummy::getId, Collectors.toList()))
Run Code Online (Sandbox Code Playgroud)

我的方法findAllUsers将String作为参数.我想用迭代替换list.get(0),因此它将为每个元素调用函数并存储在Map中.我尝试了list.foreach,但它返回void,所以没用

java lambda hashmap java-8 java-stream

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

在Java 8中使用数组流计算单词出现次数

如何使用数组流计算字符串中的字频?我正在使用Java 8.

这是我的代码:

String sentence = "The cat has black fur and black eyes";
String[] bites = sentence.trim().split("\\s+");

String in = "black cat";
Run Code Online (Sandbox Code Playgroud)

计算句子中的单词"black"和"cat"频率.单词"黑色"频率为2,单词"cat"为1.

那么目标输出就是3.

java arrays java-8 java-stream

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

使用Java 8流,如何使用索引替换地图中的键?

所以我有一个Map<String, Map<String, Integer>>,我想将它转换为一个 Map<Integer, Map<String, Integer>>字符串键被替换为地图中的索引(0,1,2,.....).我知道指数在地图中不准确但在我的情况下并不重要.我尝试使用AtomicInteger作为索引,在流上的每个操作后递增但我无法解决问题....

java lambda java-8 java-stream

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

用条件转换HashMap中的流

我是java的新手.我正在尝试从包含showNames的流创建一个HashMap.我的问题是,名称可能是重复的,它们可能会出现多次,这意味着它们必须映射到相同的键上,我在映射后尝试使用过滤器,但我不确定要放置什么条件.X-> x.equals(x)的?流showNames的外观如下:

LOTR,Lucifer,Breaking Bad,LOTR,Exorcist,The Godfather,The Godfather,Lucifer,等等

哈希映射应该具有显示名称的键,以及字符串在流中显示的时间值

java hashmap filter java-8 java-stream

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

使用Java Streams使用通用条件筛选给定列表中的对象

我需要从给定的超级列表中获取子列表,如下所述.

假设我有一个"Person"对象的超级列表,如下所示:

List<Person> personsList = new ArrayList<>();
personsList.add(new Person("John", 28));
personsList.add(new Person("Paul", 29));
personsList.add(new Person("Adam", 30));
personsList.add(new Person("Peter", 31));
personsList.add(new Person("Kate", 32));
personsList.add(new Person("John", 67));
personsList.add(new Person("Paul", 68));
personsList.add(new Person("Adam", 69));
Run Code Online (Sandbox Code Playgroud)

让Person类定义如下:

class Person {
    public String name;
    public int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return name + ": " + age;
    }
}
Run Code Online (Sandbox Code Playgroud)

通过使用Java Streams API,如何获取包含以下条目的子列表(请注意,必须获取具有相同名称的对象的重复实例):

John : 28
John : 67
Paul : 29 …
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

你可以收集(加入())而不映射到字符串吗?

我正在阅读java 8,并且作者说如果你有一个覆盖toString方法的类,那么在进行collect(joined())时你不需要将流映射到字符串.一个例子:

    public static void main(String... args) {
        List<Person> people =
        Arrays.asList(
                new Person(23, "Paul"),
                new Person(23, "John"),
                new Person(23, "Greg"),
                new Person(24, "Greg"),
                new Person(25, "Paul")
        ); // Person overrides toString

        String peopleString = people
                .stream()
                .collect(Collectors.joining());

        System.out.println(peopleString);

    }
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,只有这样:

String peopleString = people
                .stream()
                .map(Person::toString)
                .collect(Collectors.joining());
Run Code Online (Sandbox Code Playgroud)

工作,所以这本书错了吗?此外,为什么他说(我改变了一点措辞):

另请注意,如果某个类有一个toString方法返回一个字符串,您将获得相同的结果,而无需使用提取名称的函数映射原始流.

当每个对象应该继承toString的Object?

java java-8 java-stream

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

如何使用stream api重写它

我不知道Stream API的所有功能.

我的任务是:我有一个带有url的字符串列表,我有两个方法的自定义对象列表

String videoFromUrl(String url);


boolean support(String url);
Run Code Online (Sandbox Code Playgroud)

我应该从第一个列表中选择一个url,该列表将由第二个列表的一个实例支持,然后返回转换后的url

我的代码是:

@Override
    protected String videoSourceFromDocument(final Document document) {
        final List<String> hrefs = ...;
        for (final String href : hrefs) {
            final Optional<VideoDownloader> videoDownloader = this.videoDownloaders/*this is my second list*/
                                                                  .stream()
                                                                  .filter(dwnldr->dwnldr.support(href))
                                                                  .findFirst();
            if(videoDownloader.isPresent()){
                return videoDownloader.get().videoFromUrl(href);
            }
        }
        this.logger().warn("Url {} doesn't has video source",document.baseUri());
        throw new IllegalArgumentException();
    }
Run Code Online (Sandbox Code Playgroud)

是使用Stream API重写它的更好方法吗?

java java-stream

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

使用Java8列出地图

我想将对象列表转换为Map,
我正在尝试使用Java 8的流API来实现,
但遇到2个错误,其中1个是导入错误,1个是List到Map的转换代码。

导入地图界面时出错-
The import java.util.Map conflicts with a type defined in the same file.

转换码错误-

The type Map is not generic; it cannot be parameterized with arguments <String, BigDecimal>
Run Code Online (Sandbox Code Playgroud)

以下是我的代码-

public class Developer {

    private String name;
    private BigDecimal sal;
    private int age;

    /**
     * @param name
     * @param sal
     * @param age
     */
    public Developer(String name, BigDecimal sal, int age) {
        super();
        this.name = name;
        this.sal = sal;
        this.age = age;
    }

    /**
     * @return the …
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

使用java 8流将List <E>转换为Map <String,List <String >>

我正在寻找一些帮助将对象列表转换为Map<String, List<String>>.

class Person {   
    private String name;    
    private int age;
}
Run Code Online (Sandbox Code Playgroud)

我有一个List<Person>,我想收集Map<int, List<String>>关键是年龄和价值是同龄人的名单.

我试过这些线但是没有用

persons.stream().collect(Collectors.groupingBy(p -> p.getAge()), );
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

使用Java lambda或流将POJO列表转换为其ID列表

我正在努力拓宽我的Java视野并开始实际编写Java 8+代码.我有一个情况,我有一个POJO列表(每个POJO实例都有一个id : Long字段),我需要生成一个List<Long>代表他们所有的ids.这是我的代码完美无缺:

List<Fizzbuzz> fizzbuzzes = getFizzbuzzes();
List<Long> fbIds = new ArrayList<>();
for(Fizzbuzz fb : fizzbuzzes) {
    fbIds.add(fb.getId());
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更"现代"的Java 8+方式(lambdas或集合技巧,流媒体等)来编写这段代码.任何想法还是这样的好事?

java collections lambda java-8 java-stream

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

标签 统计

java ×10

java-stream ×10

java-8 ×9

lambda ×3

hashmap ×2

arrays ×1

collections ×1

filter ×1