小编Ste*_*bel的帖子

Streams backport编译错误

使用与Java 7 编译器的streamsupportjavac我遇到以下编译错误:

接口java8.util.stream.Stream <T>中的[ERROR]方法映射不能应用于给定类型; 需要[ERROR]:java8.util.function.Function <?超级java.lang.Object,?扩展R>

[ERROR]发现:<anonymous java8.util.function.Function <java.lang.Integer,java.lang.String >> [ERROR]原因:没有类型变量的实例R存在以便参数类型<anonymous java8.util.function.Function <java.lang.Integer,java.lang.String >>符合形式参数类型java8.util.function.Function <?超级java.lang.Object,?扩展R>

我的代码是

List<Object> listSum = RefStreams.iterate(0, new UnaryOperator<Integer>() {
            @Override
            public Integer apply(Integer n) {
                return n+1;
            }
        }).limit(10000).map(new Function<Integer,String>() {
            @Override
            public String apply(Integer n) {
                return String.format("%04d", n);
            }

        }).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

我想知道该怎么做以及为什么会出现这个错误?谢谢

java-7 java-stream

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

地图上的流不会保存.map更改

有人可以解释一下为什么第一个代码示例没有保存我在地图上用.map所做的更改,但第二个代码示例呢?

第一个代码示例:

stringIntegerMap.entrySet().stream()
            .map(element -> element.setValue(100));
Run Code Online (Sandbox Code Playgroud)

第二个代码示例:

        stringIntegerMap.entrySet().stream()
            .map(element -> element.setValue(100))
            .forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

另外,为什么第二个代码示例只打印值而不是整个元素(键+值)?

java dictionary java-stream

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

如何使用Java Stream处理列表中的数据

如何使用Java Stream迭代List中的2个循环.

public class ArrayStreams {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(3);
        list.add(5);
        list.add(7);
        list.add(2);

for (int i = 0; i < list.size(); i++) {
            for (int j = i + 1; j < list.size(); j++) {
                System.out.println("i :" + list.get(i) + "J :" + list.get(j));
            }
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

如何将此代码转换为Java Stream.请帮忙!

java java-8 java-stream

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

从无限流派生的已排序流无法迭代

import java.util.stream.*;
import java.util.*;

class TestInfiniteStream {
    public static void main(String args[]) {
        IntStream infiniteStream = new Random().ints();
        IntStream sortedStream = infiniteStream.sorted();

        sortedStream.forEach(i -> System.out.println(i));
    }
}
Run Code Online (Sandbox Code Playgroud)

编译并执行此代码后,出现以下错误。

Exception in thread "main" java.lang.IllegalArgumentException: Stream size exceeds max array size
Run Code Online (Sandbox Code Playgroud)

在无限流上排序流是否失败?

java java-stream

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

与Stream.of()的Java 8错误 - 像流和连接它们?

为什么以下java 8代码在第二次调用get()时显示错误?

    Stream<String> aStream = Stream.concat(Stream.of("A"), Stream.of("B"));
    String a = stream.findFirst().get();
    String b = stream.findFirst().get();
Run Code Online (Sandbox Code Playgroud)

"aStream"流应该看到两个值:"A"和"B".但是,在第一个元素已被消耗之后尝试读取任何内容

    java.lang.IllegalStateException: stream has already been operated upon or closed
Run Code Online (Sandbox Code Playgroud)

这不是Java 8中的错误吗?首先,为什么不消耗的Stream.of()-created流返回OptionalisPresent()==false?第二,为什么不Stream.concatenate()正确连接这样的Stream.of()创建流?

java concatenation illegalstateexception java-stream

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

使用 Lambda 表达式将列表转换为地图不起作用

我正在尝试将 Student 对象列表转换为一个映射,其中键是整数(即 Student 对象的 rollno 字段),Value 是 Student 对象本身。

以下是我编写的代码:

package fibonacci;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class MApfor {


    public static void main(String[] args) {


        List<Student> maplist=new ArrayList<>();

        maplist.add(new Student(1, "pavan"));
        maplist.add(new Student(2, "Dhoni"));
        maplist.add(new Student(3, "kohli"));

        maplist.forEach(System.out::println);

        Map<Integer,Student> IS=new HashMap<>();



        IS = maplist.stream().collect(Collectors.toMap(a -> a.getRollNo,a);



    }
}
Run Code Online (Sandbox Code Playgroud)

每当我尝试写最后一行时,即

IS = maplist.stream().collect(Collectors.toMap(a -> a.getRollNo,a);
Run Code Online (Sandbox Code Playgroud)

我无法检索 rollNo 字段,eclipse 没有显示建议,即每当我键入 a.get 将 rollNo 分配给键时,我无法这样做。

请提出我面临的问题。

package fibonacci;

public class Student {


    public int rollNo; …
Run Code Online (Sandbox Code Playgroud)

java collections lambda java-8 java-stream

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

列出不同的元素,包括Java Streams的计数

我想知道是否可以使用单个Java Steam语句打印出集合中的唯一元素并包括每个元素的计数。

例如,如果我有:

List<String> animals = Arrays.asList("dog", "cat", "pony", "pony", "pony", "dog");
Run Code Online (Sandbox Code Playgroud)

我想打印流:

cat - 1
dog - 2
pony - 3
Run Code Online (Sandbox Code Playgroud)

java count distinct java-stream

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

java 8 stream如何将Map <String,List <Strings >>转换为List <String>将所有的字符串值?

我有一张Map<String, List<String>>地图,我希望从中提取一个List<String>包含地图中所有字符串列表的字符串.我想使用java8流语法.

在旧的Java我会做:

List<String> all = new LinkedList<String>();
for (String key: map.keySet()) {
    all.addAll(map.get(key));
}
return all;
Run Code Online (Sandbox Code Playgroud)

如何使用流?

java java-8 java-stream

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

Java:如何实时计算正在保存的流中的sha1摘要?

我有一个用Java编写的servlet,它接受多部分形式的发布文件,该文件需要保存在MongoDb / GridFS中。我已经有为此工作的代码。

这是一个代码片段,显示了如何使用org.apache.commons.fileupload包完成此操作。它几乎不占用内存,因为它不会在内存中保留太多数据。

        ServletFileUpload upload = new ServletFileUpload();
        FileItemIterator iter = upload.getItemIterator(req);
        while (iter.hasNext()) {
            FileItemStream item = iter.next();
            String name = item.getFieldName();
            InputStream stream = item.openStream();
            if (item.isFormField()) {
                toProcess.put(name, Streams.asString(stream));
            } else {
                String fileName = item.getName();
                String contentType = item.getHeaders().getHeader("Content-Type");
                GridFSUploadOptions options = new GridFSUploadOptions()
                        // .chunkSizeBytes(358400)
                        .metadata(new Document("content_type", contentType));
                ObjectId fileId = gridFSFilesBucket.uploadFromStream(fileName, stream, options);
                fileIds.add(fileId);
                fileNames.add(fileName);
            }
Run Code Online (Sandbox Code Playgroud)

我还需要计算所有文件的sha1哈希值。阿帕奇digestutils可以用于此目的。它具有一种可以计算流中的sha1的方法:

https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/digest/DigestUtils.html#sha1-java.io.InputStream-

我的问题是此方法完全消耗了流。我需要将输入流分为两部分。将一部分输入到SHA-1计算中,另一部分输入到GridFS存储桶中。

我怎样才能做到这一点?我当时正在考虑创建自己的“管道”,该管道具有输入和输出流,可以转发所有数据,但可以实时更新摘要。

我只是不知道如何开始写这样的管道。

java stream digest

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

如何使用Java 8中的流在List实例中转换元素?

鉴于代码:

public Statement methodCallByName(MethodDeclaration method, String string) {
    List<ExpressionStatement> expressions = method.getBody().statements().stream()
                                                .filter(s -> s instanceof ExpressionStatement)
                                                .map(ExpressionStatement.class::cast)
                                                .collect(Collectors.toList());
    return null;
}
Run Code Online (Sandbox Code Playgroud)

我在Eclipse Oxygen中有以下错误:

在此输入图像描述

请注意,根据JDT文档statements()返回a .List

怎么了?

java-8 java-stream

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