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(); // 清空原有list list.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方法。
相关推荐
在Java中,去除单链表中的重复元素可以通过使用哈希集合(HashSet)来实现,该集合用于存储已经遍历过的元素。在遍历链表的过程中,我们将每个元素与集合中的元素进行比较,如果发现重复,则删除链表中的该元素。 ...
在list集合中输入元素,去除重复的元素并输出 1.使用for i循环去重 2.使用迭代器去重 3.使用HashSet特性去重
主要介绍了如何实现java8 list按照元素的某个字段去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
主要介绍了Java中List集合对象去重及按属性去重的8种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一地的参考借鉴价值,需要的朋友可以参考下
65、去掉一个Vector集合中重复的元素 66、Collection 和 Collections的区别。 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 68、你所知道的集合类都有哪些...
25、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 75 26、HashMap与HashTable的区别 75 27、Java中有多少种数据结构,分别是什么? 76 28、Arraylist 和Linkedlist...
实例64 去除重复元素 88 实例65 数组求和计算 90 实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 ...
实例64 去除重复元素 88 实例65 数组求和计算 90 实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 实例70 求方阵对角线之和 96 实例...
实例64 去除重复元素 88 实例65 数组求和计算 90 实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 实例70 求...
实例64 去除重复元素 88 实例65 数组求和计算 90 实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 实例70 求方阵对角线之和 ...
实例64 去除重复元素 88 实例65 数组求和计算 90 实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 实例70 求方阵对角线之和 96 实例...
首先用HashMap遍历一遍数组nums1,Key值储存数组元素,Value(初始值为1)值储存重复元素出现次数,每出现一次加1; b.用List储存nums2中与nums1开始intersection的元素,当遇到map中包含的Key时,才判断对应Value...
import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.... * 去除RDD的重复元素。 * */ public class DistinctDemo { public static void main(String[] args) { S
import java.util.List; public class NumTest { public static void main(String[] args) { String s="ABCD";//原字符串 List<String> result = list(s, "");//列出字符的组合,放入result System.out....
* 完成这个例子,请说出java中针对异常的处理机制。 8.编写一个程序,获取10个1至20的随机数,要求随机数不能重复。 9.编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, * 然后打印出这个十进制...
/** 保存所有姓名的集合,因为回帖人中有重复数据,所以这里用Set去除重复 */ Set<String> usersSet = new HashSet(); /** 保存所有回帖内容的集合 */ List<String> texts = new ArrayList(); /* 遍历...
这种操作模式提供可重复的读取, 并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。 值范围: TRUE | FALSE 默认值: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ...