标签: java-8

通过计数Java 8流API进行分组

我试着在Java 8流API中找到一种简单的方法来进行分组,我用这种复杂的方式出来了!

List<String> list = new ArrayList<>();

list.add("Hello");
list.add("Hello");
list.add("World");

Map<String, List<String>> collect = list.stream().collect(
        Collectors.groupingBy(o -> o));
System.out.println(collect);

List<String[]> collect2 = collect
        .entrySet()
        .stream()
        .map(e -> new String[] { e.getKey(),
                String.valueOf(e.getValue().size()) })
        .collect(Collectors.toList());

collect2.forEach(o -> System.out.println(o[0] + " >> " + o[1]));
Run Code Online (Sandbox Code Playgroud)

我很感激你的意见.

java functional-programming java-8

146
推荐指数
5
解决办法
10万
查看次数

Java 8中的Functional Interface有什么用?

我在Java 8中遇到了一个名为Functional Interface的新术语.

在使用lambda表达式时,我只能找到一个使用此接口的方法.

Java 8提供了一些内置的功能接口,如果我们想要定义任何功能接口,那么我们就可以使用@FunctionalInterface注释.它允许我们在接口中只声明一个方法.

例如:

@FunctionalInterface
interface MathOperation {
    int operation(int a, int b);
}
Run Code Online (Sandbox Code Playgroud)

除了使用lambda表达式之外,它在Java 8中有多大用处?

这里的问题与我提出的问题不同.在使用Lambda表达式时,它询问为什么我们需要功能接口.我的问题是:为什么使用功能接口而不是直接使用lambda表达式

java lambda interface java-8

144
推荐指数
7
解决办法
9万
查看次数

java 8 ZonedDateTime和OffsetDateTime有什么区别?

我已经阅读了文档,但是当我应该使用其中一个时,我仍然无法获得:

根据文档OffsetDateTime应该在将日期写入数据库时​​使用,但我不明白为什么.

java java-8 java-time

143
推荐指数
2
解决办法
4万
查看次数

使用带有lambda的JDK8压缩流(java.util.stream.Streams.zip)

在带有lambda b93的JDK 8中,b93中有一个类java.util.stream.Streams.zip可用于压缩流(这在教程Exploring Java8 Lambdas中说明.Dhananjay Nene的第1部分).这个功能:

创建一个惰性和顺序组合Stream,其元素是组合两个流的元素的结果.

然而在b98中,这已经消失了.事实上,在b98Streams中的java.util.stream中甚至无法访问该类.

是否已移动此功能,如果是这样,我如何使用b98简洁地压缩流?

我想到的应用程序是在Shen的这个java实现中,我在其中替换了zip中的zip功能

  • static <T> boolean every(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred)
  • static <T> T find(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred)

具有相当冗长代码的函数(不使用b98中的功能).

lambda functional-programming lazy-evaluation java-8 java-stream

141
推荐指数
9
解决办法
6万
查看次数

java lambda可以有多个参数吗?

在Java中,是否可以让lambda接受多种不同的类型?

即:单变量工作:

    Function <Integer, Integer> adder = i -> i + 1;
    System.out.println (adder.apply (10));
Run Code Online (Sandbox Code Playgroud)

Varargs也有效:

    Function <Integer [], Integer> multiAdder = ints -> {
        int sum = 0;
        for (Integer i : ints) {
            sum += i;
        }
        return sum;
    };

    //.... 
    System.out.println ((multiAdder.apply (new Integer [] { 1, 2, 3, 4 })));
Run Code Online (Sandbox Code Playgroud)

但是我想要一些可以接受许多不同类型参数的东西,例如:

    Function <String, Integer, Double, Person, String> myLambda = a , b, c, d->  {
    [DO STUFF]
    return "done stuff"
    };
Run Code Online (Sandbox Code Playgroud)

主要用途是在函数内部使用小内联函数以方便使用.

我查看了谷歌并检查了Java的功能包,但找不到.这可能吗?

java lambda java-8

140
推荐指数
4
解决办法
10万
查看次数

是否可以在Java 8中强制转换流?

是否可以在Java 8中强制转换流?假设我有一个对象列表,我可以做这样的事情来过滤掉所有其他对象:

Stream.of(objects).filter(c -> c instanceof Client)
Run Code Online (Sandbox Code Playgroud)

在此之后,如果我想对客户做一些事情,我需要投下每个客户:

Stream.of(objects).filter(c -> c instanceof Client)
    .map(c -> ((Client) c).getID()).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

这看起来有点难看.是否可以将整个流转换为其他类型?像流延Stream<Object>Stream<Client>

请忽略这样的事实,即做这样的事情可能意味着糟糕的设计.我们在计算机科学课上做这样的事情,所以我正在研究java 8的新功能,如果可能的话,我很好奇.

java java-8 java-stream

139
推荐指数
4
解决办法
8万
查看次数

如何将Java8流的元素添加到现有List中

收集器的Javadoc显示如何将流的元素收集到新的List中.是否有一个单行程序将结果添加到现有的ArrayList中?

java java-8 java-stream collectors

139
推荐指数
4
解决办法
16万
查看次数

为什么Cloneable不被弃用?

通常理解CloneableJava 中的接口是破坏的.这有很多原因,我不会提及; 其他人已经做到了.它也是Java架构师自己的位置.

因此,我的问题是:为什么还没有被弃用?如果核心Java团队已经确定它已被破坏,那么他们也必须考虑弃用.他们这样做的原因是什么(在Java 8中,它仍然没有被弃用)?

java deprecated cloneable java-8

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

Java 8流和RxJava可观察量之间的差异

Java 8流是否类似于RxJava observables?

Java 8流定义:

java.util.stream包中的类提供Stream API以支持对元素流的功能样式操作.

observable java-8 rx-java java-stream

137
推荐指数
5
解决办法
4万
查看次数

Java 8 - Optional.flatmap和Optional.map之间的区别

这两种方法有什么区别:Optional.flatMap()Optional.map()

一个例子将不胜感激.

java optional java-8

136
推荐指数
6
解决办法
7万
查看次数