标签: java-8

将带有 return 语句的 for 循环转换为流并过滤 lambda 语句

如何将下面带有 return 语句的 for 循环转换为 lambda 表达式或带有过滤器的流。

for(PhysicianData d : physicianDataList)
    {
        if(d.getPhysicianName().equals(physicianName))
        {
            return true;
        }
    }
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

简化 switch 语句以避免代码重复

我有以下代码:

String fullName = "";
switch(name) {
  case "name1":
    fullName = String.format("%s %s", name, "surname1");
    break;

  case "name2":
    fullName = String.format("%s %s", name, "surname2");    
    break;

  case "name3":
    fullName = String.format("%s %s", name, "surname3");
    break;
  ...
}
Run Code Online (Sandbox Code Playgroud)

(case后面有一个break语句,我只是没有写在这里)

所以问题是这样的:

有 16 个不同的 case 语句,除了 的参数之外,它们都具有完全相同的代码String.format()

有什么办法可以简化这段代码吗?


注意:Java 8 是必须的

java switch-statement java-8

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

从可选<Stream>检索流

如何获取实际流以便从Optional 中过滤或映射方法?例如

Optional.ofNullable(id)
        .map(this:loadAllById) // method loadAllById return a stream (now is wrapped in Optional<Stream>)
        .filter(obj -> obj.status) // here i have no access to object in stream but to the full stream 
Run Code Online (Sandbox Code Playgroud)

由此也产生了一个疑问。在Optional中包含一个流是否正确?由于流应该始终不为空(如果为空),是否不需要检查?

java java-8 java-stream option-type

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

Sort a Java collection object based on one field in it and apply checks

retList.sort((comp1, comp2) ->
         compartmentOrderMap.get(comp2.getCompartment()).compareTo(compartmentOrderMap
        .get(comp1.getCompartment())));
Run Code Online (Sandbox Code Playgroud)

I want to add a null check before comparing. How can I do that?

retList.sort((comp1, comp2) ->
            if(compartmentOrderMap.get(comp2.getCompartment()) != null && compartmentOrderMap.get(comp1.getCompartment()) != null)
                compartmentOrderMap.get(comp2.getCompartment()).compareTo(compartmentOrderMap
                .get(comp1.getCompartment()));
        );

//I want to do something like this
Run Code Online (Sandbox Code Playgroud)

java list java-8 null-check

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

使用java中的流按顺序打印列表的数据

我有下面的清单。

List<String> firstName = List.of("Monika","Shweta", "Shruti","Anuradha");
List<String> lastName = List.of("Mishra","Hariharno","Sharma","Mishra");
List<Integer> sal = List.of(5000000,50,500,100000);

List<List<?>> finalList = List.of(firstName,lastName,sal);
finalList.stream().flatMap(s->s.stream()).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

当我使用它打印时,flatMap()它会打印所有firstname, lastname, 然后sal.

我想firstName : lastName:sal按顺序将所有这些打印在一起。例如

Monika:Mishra:5000000
Run Code Online (Sandbox Code Playgroud)

是否可以使用flatMap或任何其他java8功能?

java list java-8 java-stream flatmap

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

在多个 null 条件中使用 Java 8 可选功能

在多个 null 条件中使用Java 8 可选功能

条件是

Optional<Payee> payee = Optional.ofNullable(paymtTrans.getPayee());
    
    if (payee.isPresent()
            && payee.get().getPayeeAcc() != null
            && payee.get().getPayeeAcc().size() > 0
            && payee.get().getPayeeAcc().get(0).getBnk() != null
            && payee.get().getPayeeAcc().get(0).getBnk().getBnkCtryCode() != null) {
        String ctryCode = payee.get().getPayeeAcc().get(0).getBnk().getBnkCtryCode();
    }
Run Code Online (Sandbox Code Playgroud)

要求是使用 Java 8 功能而不检查空值!!

需要获取ctryCode吗?

java java-8 optional-chaining

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

为什么 java8 中具有时区行为的 Instant.parse() 字符串与 java 17 不同

下面的代码片段

Instant.parse("2023-08-08T00:00:00+02:00")
Run Code Online (Sandbox Code Playgroud)

按照 java-17 中的预期进行编译和执行。但是用java-8执行时,抛出以下异常

java.time.format.DateTimeParseException: Text '2023-08-01T00:00:00+02:00' could not be parsed at index 19

    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
    at java.time.Instant.parse(Instant.java:395)
    ...
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么?java.time api 有什么变化吗?

请注意,我确实知道解决此问题的方法,以下代码适用于 java-8

OffsetDateTime.parse("2023-08-01T00:00:00+02:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME).toInstant()
Run Code Online (Sandbox Code Playgroud)

它产生了期望的结果。我有兴趣知道在 java-time api 实现中,行为是否已经改变?

java timezone-offset java-8 java-time java-17

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

在 Java 中比较两个 String 与可能的 null/空值,当一个为 null 另一个为空时,它将返回 true

寻找一种方法(也可以使用 Apache libs),将 Java 中的两个 String 与可能的 null/空值进行比较,其中主要要求是当一个为空null而另一个为空时(""),它将返回true

强调 -允许任何空/空组合,并且所有组合都将被视为一个true语句。

one   | two  | res
------|------|-----
 ""   | ""   | true
 ""   | null | true
 null | ""   | true
 null | null | true
Run Code Online (Sandbox Code Playgroud)

我在这里检查了很多相关问题,但他们没有考虑我的主要要求。

java string null java-8

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

以有效的方式从地图条目中获取公共值

假设有如下图所示:

    Map<String, List<String>> myMap =     
     {   
        k1: [ v1, v2, v3, v3],  
        k2: [ v1, v2],  
        k3: [ v1, v2, v6, v7]
      }
Run Code Online (Sandbox Code Playgroud)

我想找到所有键通用的值。

 List<String> commonValues = {v1,v2}
Run Code Online (Sandbox Code Playgroud)

我想了解使用 java 8 的有效方法。我可以在 java 5 中使用 for 循环实现相同的效果,但我确信 Java 8 有更好的方法来做到这一点。

java functional-programming hashmap java-8 java-stream

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

需要在 Java 8 中实现默认方法

在浏览“防御者方法的需要”的答案时,我遇到了这个 答案

您能否详细说明以下在接受的答案中的含义?

您应该能够切换到 Java 8,而无需在您的类中实现新方法。

java java-8

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