如何将下面带有 return 语句的 for 循环转换为 lambda 表达式或带有过滤器的流。
for(PhysicianData d : physicianDataList)
{
if(d.getPhysicianName().equals(physicianName))
{
return true;
}
}
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
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 是必须的
如何获取实际流以便从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中包含一个流是否正确?由于流应该始终不为空(如果为空),是否不需要检查?
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)
我有下面的清单。
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功能?
在多个 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吗?
下面的代码片段
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 实现中,行为是否已经改变?
寻找一种方法(也可以使用 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)
我在这里检查了很多相关问题,但他们没有考虑我的主要要求。
假设有如下图所示:
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 ×10
java-8 ×10
java-stream ×4
list ×2
flatmap ×1
hashmap ×1
java-17 ×1
java-time ×1
null ×1
null-check ×1
option-type ×1
string ×1