如何去除 List<Integer>中的对象

List<E>移除元素有两个方法。
List 有两个方法可以实现:
1、 remove(int index) return E;
这里是 索引
2、remove(E e) return boolean;
e要移除的对象。
如果是个List<Integer>如何知道1是索引还是对象。其实很好理解,对象我们一般传递的是其地址,也就是指针。这里1是Integer对象所体现出来的值,不是对象本身。
所以remove(1) 返回的是E,删除的是索引为1的元素。
要想删除值为1的Integer对象,可以先声明就是Integer对象
Integer a=1;
remove(a);
或者
remove(Integer.valueOf(1);
或者
remove((Integer)1);
以上仅是本人的一些不成熟想法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Set 来高效去重,具体代码如下: ```java List<Integer> list1 = new ArrayList<>(); List<Integer> list2 = new ArrayList<>(); // 假设 list1 和 list2 已经被填充了数据 Set<Integer> set = new HashSet<>(); set.addAll(list1); set.addAll(list2); List<Integer> resultList = new ArrayList<>(set); ``` 这样可以将两个 List 合并去重后,放入一个新的 List 。如果需要在原有 List 上去重,也可以使用 Set 来实现: ```java List<Integer> list = new ArrayList<>(); // 假设 list 已经被填充了数据 Set<Integer> set = new HashSet<>(list); list.clear(); list.addAll(set); ``` 这样可以将原有 List 的重复元素去除。 ### 回答2: 要高速去重两个List<Integer>数据,可以使用HashSet来实现。 HashSet是一种基于哈希表实现的集合,可以保证其的元素不重复。它的底层是通过哈希函数对元素进行映射,将元素存储在对应的桶。 具体操作步骤如下: 1. 创建两个HashSet对象,分别用于存储两个List的元素。 ```java HashSet<Integer> set1 = new HashSet<>(); HashSet<Integer> set2 = new HashSet<>(); ``` 2. 遍历第一个List,将其的元素添加到set1。 ```java for (Integer num : list1) { set1.add(num); } ``` 3. 遍历第二个List,将其的元素添加到set2。 ```java for (Integer num : list2) { set2.add(num); } ``` 4. 调用set1的`retainAll()`方法,传入set2作为参数,可以将set1与set2不重复的元素删除。 ```java set1.retainAll(set2); ``` 5. 最后,set1保存的就是两个List重复的元素。可以将其转化为一个新的List,或者直接使用set1进行后续操作。 这种方法的时间复杂度为O(n),其n为两个List元素个数之和。由于HashSet的底层是基于哈希表的,查找元素的速度非常快,因此可以高速去重两个List的数据。 ### 回答3: 在Java高效地去重两个List<Integer>数据可以采用以下方法: 1. 创建一个新的HashSet<Integer>,用于存储去重后的数据。 2. 遍历第一个List<Integer>,将其的每个元素添加到HashSet。 3. 遍历第二个List<Integer>,对于其的每个元素,首先检查HashSet是否已经存在该元素,若不存在,则将其添加到HashSet。 4. 将HashSet的元素转存到一个新的List<Integer>,即得到去重后的结果。 这种方法的时间复杂度为O(n),其n为两个List元素的个数之和,这是因为HashSet的添加和查询操作的平均时间复杂度为O(1)。 下面是一个示例代码: ```java import java.util.ArrayList; import java.util.HashSet; import java.util.List; public class ListDuplicateRemoval { public static void main(String[] args) { List<Integer> list1 = new ArrayList<>(); list1.add(1); list1.add(2); list1.add(3); List<Integer> list2 = new ArrayList<>(); list2.add(2); list2.add(3); list2.add(4); List<Integer> result = removeDuplicates(list1, list2); System.out.println(result); } public static List<Integer> removeDuplicates(List<Integer> list1, List<Integer> list2) { // 创建HashSet存储去重后的数据 HashSet<Integer> set = new HashSet<>(); // 遍历list1,将其的元素添加到HashSet for (Integer num : list1) { set.add(num); } // 遍历list2,将其不重复的元素添加到HashSet for (Integer num : list2) { if (!set.contains(num)) { set.add(num); } } // 将HashSet的元素转存到一个新的List List<Integer> result = new ArrayList<>(set); return result; } } ``` 以上代码的输出结果为:[1, 2, 3, 4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值