标签: java-8

创建没有注释和 Spring Boot 的 KafkaListener

我正在尝试在不使用 @KafkaListener 注释的情况下为主题创建 Kafka Consumer。我想这样做是因为我试图在不使用 spring boot 的情况下根据 application.properties 动态创建侦听器。

我认为最好的方法是手动创建一个 KafkaListenerContainerFactory 有人可以提供一个如何在它自己的类中执行此操作的示例。

spring java-8 spring-kafka

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

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

在 Java 8 和 Java 11 中使用 --version 和 -version 检查版本

爪哇 11

JAVA_HOME : C:\Program Files\Java\jdk-11.0.4
Run Code Online (Sandbox Code Playgroud)

我能够使用以下命令在 cmd 中找到 Java 版本:

java --version  //successfully executed

java -version  //successfully executed
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

爪哇 8

 JAVA_HOME : C:\Program Files (x86)\Java\jdk1.8.0_231
Run Code Online (Sandbox Code Playgroud)

我能够使用以下命令在 cmd 中找到 Java 版本:

java -version  //successfully executed
Run Code Online (Sandbox Code Playgroud)

虽然我无法通过--version命令找到 java 版本

java --version  //not successfully executed
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

为什么我在执行时收到无法创建 Java 虚拟机的错误--version,或者jdk 8 中没有此命令选项?如果它是在 jdk 11 中添加的,那么它在 doc 中的哪里提到了?

java java-8 java-11

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

收集流时如何使用 Guava 的 Multisets.toMultiSet()?

我有字符串列表,其中每个字符串由由字符 ',' (逗号)分隔的字母组成。我想遍历字符串列表,用逗号分割,并计算每个字母出现的次数,并将结果存储在 Multiset 中。应忽略空白字符串,并应修剪拆分的部分。多集应该按键排序。

下面的代码有效,即它生成所需的 Multiset。但是,我无法弄清楚如何使用正确的收集器方法 (Multisets.toMultiset()),因此求助于两步解决方案,使用临时列表变量,我想消除它。

如果有人能告诉我我应该如何在收集步骤中构造对 Multisets.toMultiset() 的调用,我将不胜感激。我被困在定义元素函数和供应商函数上,我什至无法编写编译的代码......

@Test
public void testIt() {
    List<String> temp = Stream.of("b, c", "a", "  ", "a, c")
            .filter(StringUtils::isNotBlank)
            .map(val -> val.split(","))
            .flatMap(Arrays::stream)
            .map(String::trim)
            .collect(Collectors.toList());

    Multiset<String> multiset = ImmutableSortedMultiset.copyOf(temp);

    System.out.println("As list: " + temp);
    System.out.println("As multiset: " + multiset);
    // Output is:
    // As list: [b, c, a, a, c]
    // As multiset: [a x 2, b, c x 2]
}
Run Code Online (Sandbox Code Playgroud)

我正在使用番石榴 28.1。上例中还使用了来自 commons-lang3 版本 3.9 的 StringUtils 类

这是真实场景中的一个简化示例,但仍然抓住了我的问题的本质

java guava java-8

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

在查询数据库时将 List 转换为逗号分隔的 String 以传递 SQL 的最佳方法是什么?

我有一个 ID 列表

1, 2, 3, 4
Run Code Online (Sandbox Code Playgroud)

我想写一个删除查询

public void deleteComputersUsingNative(List<Integer> id) {
    String commaSeperated = ?//Convert ID to  comma seperated string in to put in where clause
    em.createNativeQuery("DELETE FROM PD_OWNER.CIM_SNOW_COMP_OPTDRIV_TAB WHERE ID IN (" +commaSeperated +")").executeUpdate();
}
Run Code Online (Sandbox Code Playgroud)

toString()在一种解决方案中执行和删除括号。

有没有更好的方法可以在纯 java 或 jpa/hibernate 中处理这个问题?

java sql hibernate jpa java-8

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

Java 8:将 List&lt;List&lt;List&lt;Product&gt;&gt; 合并为一个列表

我有 3 个列表,List<List<List<Product>>我想将它们合并为一个。我已经阅读了几篇 SO 文章,但我仍然不确定如何继续。到目前为止我有

allProducts.stream()
    .flatMap(List::Stream)
    .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但这只会合并两个列表,对吗?在该语句中合并所有三个的最佳方法是什么?我见过reduce()用过,但我不知道怎么写。我需要获得Product.

java java-8 java-stream

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

TOMCAT 9 +Java 8 升级问题:未定义 RequestUtil 类型的 URLDecode(String) 方法

最近我将我的应用程序升级到 Tomcat 9 和 Java 8 并部署了我的战争文件。当我启动我的应用程序时,我收到了类似的错误,

  An error occurred at line: [3] in the jsp file: [/app/myPage.jsp]
  The method URLDecode(String) is undefined for the type RequestUtil
   1: </script>
   2: <%
   3: String fromPage = org.apache.catalina.util.RequestUtil.URLDecode( "redirect" );

Run Code Online (Sandbox Code Playgroud)

在我的 lib 路径 catalina.jar 中有该方法。请指导我缺少什么。

java java-8 tomcat9

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

如何在 Java 8 中过滤 Optional.empty

我想用 0 过滤值以打印无效的消息,但结果是 Optional.empty

 Long l = 0L;
 Optional<String> l2 = Optional.of(l).filter(t -> t>0).map(t ->t.toString());
 Optional<String>l3 =l2.filter(String::isEmpty).map(t ->"invalid");
 System.out.println(l3);
Run Code Online (Sandbox Code Playgroud)

需要返回类型是 Optional<String>

预期产出 -Invalid
实际产出 -Optional.empty

更新

需要返回类型是 String

预期产出 -Invalid value 0
实际产出 -Optional.empty

java optional java-8

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

使用 Streams 比较和组合两个不同类型的列表

我有以下课程:

public class Role {

    private Integer id;
    private String name;
    private String description;

    //getters and setters
}
Run Code Online (Sandbox Code Playgroud)
public class UserRole {

    private Integer id;
    private User user;
    private Role role;

    //getters and setters
}
Run Code Online (Sandbox Code Playgroud)
public class RoleCheckbox {

    private Role role;
    private Boolean checked;

    //getters and setters
}
Run Code Online (Sandbox Code Playgroud)

现在在我的服务类中,我得到了 Role 和 UserRole 对象的列表。角色列表包含所有可用角色,用户角色列表包含分配给特定用户的角色。

我想比较这两个列表并创建一个 RoleCheckbox 对象列表。因此,新创建的列表应包含所有角色和“已检查”字段,其值取决于用户的角色。

我已经解决了如下:

this.roleCheckboxes = new ArrayList<RoleCheckbox>();
for(Role role : roles) {
    Boolean checked = false;
    for (UserRole userRole : user.getUserRoles()) {
        if(userRole.getRole() == role) …
Run Code Online (Sandbox Code Playgroud)

java collections for-loop java-8 java-stream

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

如何从具有公共字段的另一个对象列表中为一个对象列表的字段设置值?

我有 2 个列表,比方说

1 -> List<Employee> list1;
2 -> List<Age> list2

class Employee {
    String name;
    String age;
    String address;
}

class Age {
    String name;
    String age;
}
Run Code Online (Sandbox Code Playgroud)

我喜欢做的是我需要更换的年龄在所有记录员工列表随着年龄的年龄列表具有相同名称的两个。我如何在 Java 8 中实现这一目标?

java java-8 java-stream

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