java List去除重复内容

sancaiodm Java 2022-02-16 1049 0

list去除重复内容方式1

使用迭代器循环并判断当前元素首次出现的位置(indexOf)是否等于最后出现的位置(lastIndexOf),如果不等于则说明此元素为重复元素并删除当前元素,循环一次即可得到一个没有重复元素的集合

public class ListQuChong {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 创建并给 List 赋值
        List<String> list = new ArrayList<>();
        list.add("张三");
        list.add("王五");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        // 去重操作
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
        	String item = iterator.next();
            if (list.indexOf(item) != list.lastIndexOf(item)) {
                iterator.remove();
            }
        }
        list.forEach(people -> System.out.println(people));
    }
}

打印输出:
张三
李四
王五
赵六

list去除重复内容方式2:利用set去重复内容

public class ListQuChong {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 创建并给 List 赋值
        List<String> list = new ArrayList<>();
        list.add("张三");
        list.add("王五");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        list.add("赵六");
        // 去重操作
        //HashSet<String> set = new HashSet<>(list);   //使用HashSet会打乱原有的list顺序
        //TreeSet<String> set = new TreeSet<>(list);   //使用TreeSet会打乱原有的list顺序
        LinkedHashSet<String> set = new LinkedHashSet<>(list);
        set.forEach(people -> System.out.println(people));
    }
}

image.png

list去除重复内容方式3: JDK8中Stream去重复内容

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 创建并给 List 赋值
        List<String> list = new ArrayList<>();
        list.add("张三");
        list.add("王五");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        list.add("赵六");
        // 去重复操作
        list = list.stream().distinct().collect(Collectors.toList());
        list.forEach(p -> System.out.println(p));
    }
}

输出:

image.png


总结:

以上三种list去重内容方式,如果你的java环境是jdk1.8推荐使用最后一种去重方法,这方法最简单最方便且也未创建新的集合或是队列的耗时操作,如果你的java环境低于1.8版本,推荐使用第二种LinkedHashSet方法,

评论