标签: java-8

将List <Map <Long,String >>转换为List <Long> Java 8

我有一个地图列表,其中每个地图只有one key-value pair一个。我需要将其转换为仅键列表。我正在尝试使用流,如下所示:

List<Map<Long, String>> lst = // some data
List<Long> successList = lst.stream().map(ele -> ele.keySet().toArray()[0]).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但是我最终收到以下错误:

java: incompatible types: inference variable T has incompatible bounds
  equality constraints: java.lang.Long
  lower bounds: java.lang.Object
Run Code Online (Sandbox Code Playgroud)

如何解决此问题,或者有什么更好的方法?

java collect java-8 java-stream

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

为什么Java的Optional.of()不接受空值?然后,它不再是真正的“可选”值

我知道Optional.ofNullable()值是否也可以为null。我的问题是,为什么还没有默认行为Optional.of()呢?如果值不能是null,为什么要放在Optional第一个?如果结果还是为空,那么无论如何您都会得到一个NPE。如果您Optional使用of()方法构造一个,那么您仍然会拥有Optional包装器的所有其他方法,只有在值可以为的情况下,它们才真正有目的null

编辑:我已经阅读了为什么在Optional.ofNullable上使用Optional.of?在发布此消息之前,但答案是“因为您可以更快地发现错误,并且以这种方式进行跟踪更容易”。但是我有点不同意,也许您的堆栈跟踪中会包含一些额外的行,但是仍然很容易查明NPE的来源。

java optional java-8

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

通过首先过滤同一对象的其他唯一值来求和对象的值

假设我有一个对象列表,可称其为具有数量和价格作为字段的对象Order。

例如如下:

对象Order(字段quantityprice)列表包含以下值:

Quantity  Price

5         200
6         100
3         200
1         300
Run Code Online (Sandbox Code Playgroud)

现在,我想使用Java-8来获取以以下方式过滤的列表:

Quantity  Price

8         200
6         100
1         300
Run Code Online (Sandbox Code Playgroud)

价格是要过滤的唯一值,并对价格具有的任何数量进行求和,我想以此为基础形成一个新列表。

请建议我如何使用Java 8 Lambda表达式来完成此操作,谢谢。

java list arraylist java-8 java-stream

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

将UTC中的纪元时间转换为另一个时区中的纪元时间

我需要将UTC的时间转换为不同时区的时间。示例:UTC时间为1389556017000,以美国/蒂华纳时区为纪元。

public static void main(String[] args) {


        Long epoch_date = 1389556017000L;

        ZonedDateTime date1= Instant.ofEpochMilli(epoch_date)
                             .atZone(ZoneId.of("America/Tijuana"));

        long epoch_second = date1.toInstant().toEpochMilli();

       System.out.println("Epoch time in new timezone is  :" + epoch_second);
    }
Run Code Online (Sandbox Code Playgroud)

我的输出与输入相同...

java datetime java-8

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

JDK或JRE的Java核心API部分?

我想知道官方Java核心API是JDK还是JRE的一部分。

根据对Java的理解,我认为核心API应该是JRE的一部分,因为该应用程序应该可以在没有JDK提供的附加功能的情况下运行。

我还在网上找到了一些信息,说JDK的3个基本组件是:

  1. Java编译器
  2. 虚拟机
  3. Java API


(由于JRE是JVM的实现,因此Java API属于JRE还是JDK?)
编辑:实际问题:Java API是否包含在JRE中?

java java-api java-8

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

java.util.function中的Runnable表示是什么?

最近,我想知道Runnable经常在功能上下文中使用。同时,根据javadoc,它的语义非常接近多线程,但在这种情况下并没有使用它:

Runnable接口应该由实例打算由线程执行的任何类实现。该类必须定义一个没有参数的方法,称为run。该接口旨在为希望在活动状态下执行代码的对象提供通用协议。例如,Runnable由Thread类实现。处于活动状态仅表示线程已启动但尚未停止。

Runnable相当于Supplier<Void>?或Runnable等同于Function<Void,Void>,为什么不是供应商呢?Runnable如何与已经提供的功能接口的java.util.function包对齐。

java lambda functional-programming runnable java-8

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

为什么我不能在此代码中以相反的顺序排序?

我试图以ArrayList<Person>相反的顺序对此进行排序,但这无法编译

    List<Person> newList = arrayList.stream()
                .sorted(Comparator.reverseOrder(Person::getAge)) //Error
                .limit(3)
                .collect(Collectors.toList());

    newList.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以对流进行反向排序吗?

java sorting java-8 java-stream

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

从一堆地图中创建特定值列表的有效方法

说我有一张地图清单

List<Map<String, Double>> maps = new ArrayList<>();

Map<String, Double> map1 = new HashMap();
map1.put("height",60D);
map1.put("weight",144D);

maps.add(map1);


Map<String, Double> map2 = new HashMap();
map2.put("height",63D);
map2.put("weight",192D);

maps.add(map2);
Run Code Online (Sandbox Code Playgroud)

等等...

创建身高或体重列表的最快方法是什么?像列表高度之类的东西。

经典的方法是浏览地图,使用if条件并搜索高度键,然后如果找到高度键,则将其添加到返回列表中。

使用流执行此操作的等效方法是什么?

java dictionary list java-8 java-stream

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

Java 8中的函数和双功能链接

Java-8带有FunctionBiFunction。我们如何链接多个FunctionBifunction实例。这样一个人的输出成为另一个人的输入Function。我创建了简单的函数和双功能来说明。

import java.util.function.BiFunction;
import java.util.function.Function;

class FunctionSample1 {

    public static void main(String[] args) {
        BiFunction<Integer, Integer, Integer> mul = (x, y) -> {
            return x * y;
        };

        BiFunction<Integer, Integer, Integer> div = (x, y) -> {
            return x / y;
        };

        BiFunction<Integer, Integer, Integer> sum = (x, y) -> {
            return x + y;
        };

        BiFunction<Integer, Integer, Integer> sub = (x, y) -> {
            return x - y;
        }; …
Run Code Online (Sandbox Code Playgroud)

java lambda functional-programming java-8

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

对对列表进行排序

我已经列出了成对的。我想先根据键对它们进行排序,如果键相同,则根据值进行排序。

我尝试了以下代码,但引发了不兼容类型的异常:无法推断类型变量T

 List<Pair<Integer,Integer>> list = new ArrayList<>();
 list.sort(Comparator.comparingInt(Pair::getKey).thenComparingInt(Pair::getValue);
Run Code Online (Sandbox Code Playgroud)

错误:

不兼容的类型:无法推断类型变量T (参数不匹配;类对中的无效方法引用方法getKey无法应用于所需的给定类型:未找到参数:对象原因:实际和正式参数列表的长度不同)

其中T,K,V是类型变量:T扩展在方法compareInt(ToIntFunction)中声明的对象K扩展在类Pair中声明的对象V扩展在类Pair中声明的对象

java java-8

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