java判断List<String> desenRoleIds和List<Long> roleIds是否有相同元素
时间: 2024-02-20 21:58:52 浏览: 77
可以使用Java 8的Stream API和anyMatch方法来判断List<String> desenRoleIds和List<Long> roleIds是否有相同元素,示例如下:
```
boolean containsSameElement = desenRoleIds.stream()
.map(Long::parseLong)
.anyMatch(roleIds::contains);
```
这里使用了map方法将List<String> desenRoleIds中的每个元素转换为Long类型,然后使用anyMatch方法来判断List<Long> roleIds中是否包含任意一个元素。如果包含,则containsSameElement的值为true,否则为false。
相关问题
java将List<String>转换为List<Long>
在Java中,如果你有一个`List<String>`并且想将其转换为`List<Long>`,你需要遍历原始列表并为每个字符串执行适当的转换操作。这通常涉及到创建一个新的`List<Long>`,然后对每个字符串调用`Long.parseLong()`或`Long.valueOf()`方法将其转换成long类型的值。这是一个示例:
```java
List<String> stringList = ...; // 假设这是你要转换的字符串列表
List<Long> longList = new ArrayList<>();
for (String str : stringList) {
try {
long num = Long.parseLong(str);
longList.add(num);
} catch (NumberFormatException e) {
// 处理无法转换的字符串
System.out.println("Invalid string: " + str);
}
}
```
在这个例子中,如果字符串不是有效的数字表示,`Long.parseLong()`会抛出`NumberFormatException`,你可以选择捕获这个异常并处理。
java中List<string> list1和List<string> list2 取list1中含有几个list2中的值
可以使用Java 8的Stream API来实现这个功能。具体实现步骤如下:
1.使用`filter`方法过滤出`list1`中包含`list2`中值的元素。
2.使用`count`方法统计符合条件的元素个数。
代码示例:
```
List<String> list1 = Arrays.asList("apple", "banana", "orange", "pear", "peach");
List<String> list2 = Arrays.asList("banana", "pear");
long count = list1.stream()
.filter(list2::contains)
.count();
System.out.println(count); // 输出结果为2
```
解释一下上面的代码:
首先定义了两个字符串列表`list1`和`list2`,然后使用`stream`方法将`list1`转换为一个流。
接着使用`filter`方法过滤出`list1`中包含`list2`中值的元素,`list2::contains`表示使用`list2`的`contains`方法来判断。
最后使用`count`方法统计符合条件的元素个数,输出结果为2。
阅读全文