两个List<Long>判断是否有重复值
时间: 2024-09-09 18:08:48 浏览: 116
判断两个`List<Long>`是否有重复值,你可以通过多种方法来实现:
1. **使用Set**:将其中一个列表转换成`Set`,由于集合不允许有重复元素,如果转换后的集合大小小于原列表长度,则说明存在重复值。示例代码如下:
```java
Set<Long> set = new HashSet<>(list1);
if (set.size() != list1.size()) {
System.out.println("列表1中有重复值");
}
```
同样地,对第二个列表做同样的操作。
2. **使用Java 8 Stream API**:
```java
if (!list1.stream().distinct().equals(list1)) {
System.out.println("列表1中有重复值");
}
```
如果两个列表的流处理后的结果不相等,说明有重复。
3. **循环遍历**:
可以通过嵌套循环,检查第一个列表的每个元素是否存在于第二个列表中,或者反之。
4. **使用Guava库**:
如果项目中使用了Google Guava库,可以使用`Lists.difference()`函数找出两个列表之间的差异,如果有非空结果,说明有重复。
对于性能考虑,如果数据量大,使用Set或者Stream API的方式通常更快。
相关问题
java怎么判断list<long>里面是否有某个值
你可以使用 `contains` 方法来判断一个 `List<Long>` 是否包含某个值,例如:
```java
List<Long> list = Arrays.asList(1L, 2L, 3L, 4L, 5L);
if (list.contains(3L)) {
System.out.println("List contains 3");
} else {
System.out.println("List does not contain 3");
}
```
这里的 `contains` 方法会返回一个 `boolean` 类型的值,如果列表中包含该值,则返回 `true`,否则返回 `false`。
java 两个List<Long> 去重
在Java中,对于两个List<Long>,可以采用以下两种方式进行去重:
1. 通过HashSet去重
对于两个List<Long>,可以将它们分别转换为HashSet<Long>,再将这两个Set合并为一个Set,最后再将Set转换为List<Long>,即可去重。具体实现如下:
```java
List<Long> list1 = new ArrayList<Long>();
// 添加元素到list1中
List<Long> list2 = new ArrayList<Long>();
// 添加元素到list2中
Set<Long> set = new HashSet<Long>(list1);
set.addAll(list2);
List<Long> resultList = new ArrayList<Long>(set);
```
2. 通过Java 8 Stream API去重
对于两个List<Long>,可以先将这两个List合并为一个List,再通过Java 8 Stream API进行去重操作,具体实现如下:
```java
List<Long> list1 = new ArrayList<Long>();
// 添加元素到list1中
List<Long> list2 = new ArrayList<Long>();
// 添加元素到list2中
List<Long> resultList = Stream.of(list1, list2)
.flatMap(x -> x.stream())
.distinct()
.collect(Collectors.toList());
```
以上两种方式均可以实现对两个List<Long>的去重操作,使用哪种方式取决于具体的需求和实现场景。
阅读全文