首页 > 编程知识 正文

将list中重复的元素去掉 java,java去除list中的重复数据

时间:2023-05-06 14:52:42 阅读:203738 作者:2546

Java中的List是有序,而且允许重复的,但有时候我们却不希望它存在重复的元素,那么有什么办法可以去除List里面重复的元素呢?

 

本文提供三种方法去除重复元素:

/** * 删除ArrayList中重复元素 * @author jimzhang */public class DuplicateRemoval<E> {@SuppressWarnings("unchecked")public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("c");list.add("a");list.add("a");list.add("c");new DuplicateRemoval().removeDuplicate3(list);}/** * 循环剔除重复元素 * @param list */public void removeDuplicate1(List<E> list) {for (int i = 0; i < list.size() - 1; i++) { // i从第一个开始遍历for (int j = list.size() - 1; j > i; j--) { // j从最后一个开始遍历if (list.get(j).equals(list.get(i))) {list.remove(j);}}}System.out.println(list);}/** * 通过HashSet剔除(无序) * @param list */public void removeDuplicate2(List<E> list) {Set<E> set = new HashSet<E>(list); // 通过HashSet去重复list.clear(); // 清空原有listlist.addAll(set);System.out.println(list);}/** * 通过HashSet剔除(有序) * @param list */public void removeDuplicate3(List<E> list) {Set<E> set = new HashSet<E>();List<E> newList = new ArrayList<E>(); // 创建一个list维持顺序for (int i = 0; i < list.size(); i++) {E obj = list.get(i);if (set.add(obj)){newList.add(obj);}}list.clear();list.addAll(newList);System.out.println(list);}}

 

注:如果是对象需要用HashSet去重,则要将对象实现equals和hashCode方法。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。