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

标签:java,list,去重
0
投稿

猜你喜欢

  • springboot项目启动慢的问题排查方式

    2023-06-19 18:58:40
  • 详解Java设计模式编程中的访问者模式

    2023-11-28 01:00:43
  • java多线程Future和Callable类示例分享

    2021-09-02 09:49:37
  • C#中怎么将一个List转换为只读的

    2021-10-04 15:52:51
  • 详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用

    2021-11-18 12:18:05
  • ImageSwitcher图像切换器的使用实例

    2022-10-29 13:16:02
  • java如何去除图片中的白色背景

    2022-04-17 00:07:14
  • Mybatis实现单个和批量定义别名typeAliases

    2023-02-11 06:27:03
  • 解决JAVA遍历List集合,删除数据时出现的问题

    2021-12-25 15:38:03
  • C#使用LOCK实现线程同步

    2022-02-02 10:51:14
  • Mybatis如何实现@Select等注解动态组合SQL语句

    2022-04-13 16:42:05
  • Java多线程、进度条实现赛马实验的示例代码

    2023-08-20 04:44:10
  • 详解Java String字符串获取每一个字符及常用方法

    2022-12-14 05:15:33
  • C#中实现AES算法加密解读

    2022-09-17 16:49:36
  • spring boot中多线程开发的注意事项总结

    2022-03-14 19:20:07
  • myEclipse配置jdk1.7教程

    2022-07-21 11:25:35
  • C# datatable 不能通过已删除的行访问该行的信息处理方法

    2022-07-31 02:57:08
  • android使用PullToRefresh实现下拉刷新和上拉加载

    2023-08-06 11:06:58
  • C#实现简单串口通讯实例

    2022-06-18 11:29:42
  • 将文件夹下所有文件输出到日志文件中 c#递归算法学习示例

    2023-04-08 20:36:22
  • asp之家 软件编程 m.aspxhome.com