如何实现List 集合

如何实现List 集合去重?

3种实现思路:

1.自定义方法去重,通过循环判断当前的元素是否存在多个,如果存在多个,则删除此重复项,循环整个集合最终得到的就是一个没有重复元素的List1)首先我们可以创建一个新的集合,通过循环原集合判断循环的元素,是否存在于新集合,如果不存在就插入,存在了就忽略,这样循环玩,这样循环完了,最终新的集合就是没有重复元素的集合。

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

public class DistinctExample {
public static void main(String[] args) {
// 创建并给 List 赋值
List<Person> list = new ArrayList<>();
list.add(new Person("李四", "123456", 20));
list.add(new Person("张三", "123456", 18));
list.add(new Person("王五", "123456", 22));
list.add(new Person("张三", "123456", 18));
// 去重操作
List<Person> newList = new ArrayList<>(list.size());
list.forEach(i -> {
if (!newList.contains(i)) { 
// 如果新集合中不存在则插入
newList.add(i);
}
});
// 打印集合
newList.forEach(p -> System.out.println(p));
}
}

@Data
class Person {
private String name;
private String password;
private int age;

public Person(String name, String password, int age) {
this.name = name;
this.password = password;
this.age = age;
}
}2)使用迭代器循环并且判断当前元素首次出现的位置(indexOf)是否等于最后出现的位置(IastIndexOf),如果不等于则说明此元素为重复元素,最终就能得到一个没有重复元素的集合。

import lombok.Data;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class DistinctExample {
public static void main(String[] args) {
// 创建并给 List 赋值
List<Person> list = new ArrayList<>();
list.add(new Person("李四", "123456", 20));
list.add(new Person("张三", "123456", 18));
list.add(new Person("王五", "123456", 22));
list.add(new Person("张三", "123456", 18));
// 去重操作
Iterator<Person> iterator = list.iterator();
while (iterator.hasNext()) {
// 获取循环的值
Person item = iterator.next();
// 如果存在两个相同的值
if (list.indexOf(item) != list.lastIndexOf(item)) {
// 移除相同的值
iterator.remove();
}
}
// 打印集合信息
list.forEach(p -> System.out.println(p));
}
}

@Data
class Person {
private String name;
private String password;
private int age;

public Person(String name, String password, int age) {
this.name = name;
this.password = password;
this.age = age;
}
}

 

2.利用HashSet去重

    List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("a");
        list.add("b");
        //利用HashSet去重
        //利用List中的元素创建HashSet集合,此时set中进行了去重操作
        HashSet set = new HashSet(list);
        //清空list集合
        list.clear();
        //将去重后的元素重新添加到list中
        list.addAll(set);

HashSet 去重之后,元素的先后顺序也发生了改变
Set集合依靠自带的去重特性,可以很方便的实现去重功能,并且可以用LinkedHastSet再去重的同时又保证了元素所在的位置不被更改




3.通过List的contains()方法去重
     // 创建一个新的list集合,用于存储去重后的元素
             List listTemp = new ArrayList();
    // 遍历list集合
          for (int i = 0; i < list.size(); i++) {
   // 判断listTemp集合中是否包含list中的元素
          if (!listTemp.contains(list.get(i))) {
   // 将未包含的元素添加进listTemp集合中
         listTemp.add(list.get(i));
        }
    }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

princeAladdin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值