Java中List集合去除重复数据的方法汇总
作者:风中的小团团 发布时间:2021-07-05 14:57:21
List集合概述
List集合是一个元素有序(每个元素都有对应的顺序索引,第一个元素索引为0)、且可重复的集合。
List集合常用方法
List是Collection接口的子接口,拥有Collection所有方法外,还有一些对索引操作的方法。
void add(int index, E element);:将元素element插入到List集合的index处;
boolean addAll(int index, Collection<? extends E> c);:将集合c所有的元素都插入到List集合的index起始处;
E remove(int index);:移除并返回index处的元素;
int indexOf(Object o);:返回对象o在List集合中第一次出现的位置索引;
int lastIndexOf(Object o);:返回对象o在List集合中最后一次出现的位置索引;
E set(int index, E element);:将index索引处的元素替换为新的element对象,并返回被替换的旧元素;
E get(int index);:返回集合index索引处的对象;
List<E> subList(int fromIndex, int toIndex);:返回从索引fromIndex(包含)到索引toIndex(不包含)所有元素组成的子集合;
void sort(Comparator<? super E> c):根据Comparator参数对List集合元素进行排序;
void replaceAll(UnaryOperator<E> operator):根据operator指定的计算规则重新设置集合的所有元素。
ListIterator<E> listIterator();:返回一个ListIterator对象,该接口继承了Iterator接口,在Iterator接口基础上增加了以下方法,具有向前迭代功能且可以增加元素:
bookean hasPrevious():返回迭代器关联的集合是否还有上一个元素;
E previous();:返回迭代器上一个元素;
void add(E e);:在指定位置插入元素;
Java List去重
1. 循环list中的所有元素然后删除重复
public static List removeDuplicate(List list) {
for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {
for ( int j = list.size() - 1 ; j > i; j -- ) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
return list;
}
2. 通过HashSet踢除重复元素
public static List removeDuplicate(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
return list;
}
3. 删除ArrayList中重复元素,保持顺序
// 删除ArrayList中重复元素,保持顺序
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println( " remove duplicate " + list);
}
4.把list里的对象遍历一遍,用list.contain(),如果不存在就放入到另外一个list集合中
public static List removeDuplicate(List list){
List listTemp = new ArrayList();
for(int i=0;i<list.size();i++){
if(!listTemp.contains(list.get(i))){
listTemp.add(list.get(i));
}
}
return listTemp;
}
总结
来源:https://blog.csdn.net/u011728105/article/details/46594963


猜你喜欢
- Activity是最基本的模块,一般称之为"活动",在应用程序中,一个Activity通常就是一个单独的屏幕。简单理解,
- 概念异常处理的概念起源于早期的编程语言,如 LISP、PL/I 和 CLU。这些编程语言首次引入了异常处理机制,以便在程序执行过程中检测和处
- 本文实例为大家分享了Spring实现默认标签解析流程的具体代码,供大家参考,具体内容如下承接上文,进入parseBeanDefinition
- C#备忘录设计模式大家好,老胡又和大家见面了。首先承认今天的博客有点标题党了,人生是没有存档,也没有后悔药的。有存档和后悔药的,那是游戏,不
- 在一般性开发中,笔者经常看到很多同学在对待java并发开发模型中只会使用一些基础的方法。比如Volatile,synchronized。像L
- 本文已收录《Java常见面试题》系列,Git 开源地址:https://gitee.com/mydb/interviewHashSet 实现
- 当我们右键点击listview控件时,可以得到选择的项的各个文本内容。现在我们要求只获取右键点击时的单元格的文本内容。方法如下:1、定义全局
- 一.利用二进制状态法求排列组合,此种方法比较容易懂,但是运行效率不高,小数据排列组合可以使用import java.util.Arrays;
- 接上一篇文章:Android实现图片区域裁剪功能上一篇文章提及了通过调用系统相册或拍照来实现图片的缩放\裁剪。不过这对于笔者项目的要求同样不
- 在IntelliJ IDEA中一不小心将你本地代码给覆盖了,这个时候,你 ctrl + z
- 被接受的特性1. Jigsaw 项目;模块化源码Jigsaw项目是为了模块化Java代码、将JRE分成可相互协作的组件,这也是Java 9
- android动态布局相比静态布局,动态布局不用再将xml转变了布局代码,提高了一定的效率,当然可以忽略不记。动态布局主要是比较灵活,可以很
- DSA数字签名,供大家参考,具体内容如下一、实验目的在掌握了ElGamal和Schorr数字签名算法的基础上,进一步地学习和掌握DSA签名算
- 详解java.lang.reflect.Modifier.isInterface()方法java.lang.reflect.Modifier
- ①概念二叉搜索树又称二叉排序树,它或者是一棵空树**,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值
- 并行和并发并行:多个CPU实例或是多台机器同时执行一段处理逻辑,是真正的同时。并发:一个CPU或一台机器,通过CPU调度算法,让用户看上去同
- 前言在之前 LiveData 源码浅析的博客中提到了 ViewModel 组件,当时对 ViewModel 的解释是 “
- 一、Synchronized的基本使用Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchr
- 之前由于项目需要比较详细地学习了Spring Security的相关知识,并打算实现一个较为通用的权限管理模块。由于项目是前后端分离的,所以
- 简单工厂简单工厂模式是属于创建型模式,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。定义了一个创建对象的类,由