`
lhkzyz
  • 浏览: 347981 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java List 去重(两种方式)

    博客分类:
  • java
阅读更多

方法一: 通过Iterator 的remove方法

 

public void testList() {
 
 List<Integer> list=new ArrayList<Integer>();
 
 list.add(1);
 list.add(2);
 list.add(4);
 list.add(1);
 list.add(2);
 list.add(5);
 list.add(1);
 List<Integer> listTemp= new ArrayList<Integer>();
 Iterator<Integer> it=list.iterator();
 while(it.hasNext()){
  int a=it.next();
  if(listTemp.contains(a)){
   it.remove();
  }
  else{
   listTemp.add(a);
  }
 }
 for(Integer i:list){
  System.out.println(i);
 }
}

 

方法二:直接将结果赋值给另一个List

 

public void testList2() {
	List<Integer> list=new ArrayList<Integer>();
	list.add(1);
	list.add(2);
	list.add(4);
	list.add(1);
	list.add(2);
	list.add(5);
	list.add(1);
	List<Integer> tempList= new ArrayList<Integer>();
	for(Integer i:list){
		if(!tempList.contains(i)){
			tempList.add(i);
		}
	}
	for(Integer i:tempList){
		
		System.out.println(i);
	}
}	

 

 打印结果

 

1
2
4
5

 

5
9
分享到:
评论
15 楼 hai2653068 2012-11-28  
刚刚就用到了。。。   一字符串类型时间的排序   时间有重复的要去重的
14 楼 zx44y 2012-09-22  
没多大概率用得到。
13 楼 lhkzyz 2012-09-21  
bitray 写道
这种简单的数据结构基本在实际中用不到


哥就是在实际项目中用到的!
12 楼 lhkzyz 2012-09-21  
ychen_123 写道
为什么不直接用set?

我要保持list原来的顺序,所以一定要这样搞,可以用 set.add(list),就可以去重了,但是set是无序的,不能保持原来的顺序,谢谢你的提问!
11 楼 lhkzyz 2012-09-21  
tianya0370 写道
这种排序效率也太低了吧? 直接放入Map 多方便

map 要放键,值,可读性不好啊
10 楼 liuyangan2011 2012-09-21  
List<String> lst=Arrays.asList("a","b","c","b","a");
for (Iterator iter = lst.iterator(); iter.hasNext();) {
String element = (String) iter.next();
System.out.print(element+",");

}
System.out.println();
Set set=new LinkedHashSet<String>();
set.addAll(lst);
for (Iterator iter = set.iterator(); iter.hasNext();) {
String element = (String) iter.next();
System.out.println(element);

}
9 楼 tianya0370 2012-09-21  
这种排序效率也太低了吧? 直接放入Map 多方便
8 楼 ychen_123 2012-09-21  
为什么不直接用set?
7 楼 ray_linn 2012-09-21  
有啥区别?
6 楼 hailong_qin 2012-09-21  
LinkedHashSet有"排重"的作用, 其中的一个用处就是可以把List或Array中的元素放到一个HashSet里以把重复的元素去掉,但是LinkedHashSet的好处: 保持List或Array里元素的顺序. 比如从数据库里取出一个List的数组, 当然可能通过SQL里的关键字distinct而在数据库里就排重,但可能出于什么特殊的考虑而没有调用distinct,这样在Java里想排重就自然地想到了Set,而初次想到的当然也就是HashSet, 但写出来后测试时一看结果, 不对呀, 原来从数据库里取出数据明明是已Order好的, 怎么显示出的却乱了, 转念一想可不是嘛: 在用Set的HashSet排重时,它并不关心你原来数据的顺序.这时LinkedHashSet 可以上场了。LinkedHashSet 顾名思义,就是在Hash的实现上添加了Linked的支持。HashSet的每个节点上通过一个链表串联起来,这样就可以保证确定的顺序。对于希望有常量复杂度的高效存取性能要求,同时有要求排序的情况下,现在可以直接使用LinkedHashSet。

5 楼 bitray 2012-09-21  
这种简单的数据结构基本在实际中用不到
4 楼 archy123 2012-09-21  
一般不允许重复元素的集合都可以吧。
map通过key,set等等
3 楼 nanjinghhu 2012-09-21  
HashTable
2 楼 fxz_2008 2012-09-21  
Set set = new HashSet();
set.addAll(list);
newList.addAll(set);
for (Integer i : newList) {
   System.out.println(i);
}
1 楼 jinnianshilongnian 2012-09-21  
这两种方案的复杂度都是o(n^2)

可以考虑Hash表 或 BitSet(如果数据量不大的话 比如在1---10000之间  通过位开关完成)

1、如果采用Hash表(如HashSet) 理想情况是 o(n)*o(1)
2、BitSet 也是 o(n)*o(1)

相关推荐

    java list去重操作实现方式

    本文将详细介绍两种Java中对List进行去重的方法,分别是不带类型参数的写法和带类型参数的写法,并通过示例代码进行演示。 1. 不带类型写法: 这种方法适用于Java版本较低或者不使用泛型的情况。基本思路是创建一个...

    java中List对象列表实现去重或取出及排序的方法

    在Java中,对List对象列表实现去重或取出及排序是一种常见的操作。下面将详细介绍相关的方法和实现。 1. 实体类重写equals和hashCode方法 在Java中,想要去重List对象列表,首先需要重写实体类的equals和hashCode...

    简述Java List去重五种方法

    Java 8引入了Stream API,这是一种非常方便的方式来处理List去重。我们可以使用Stream的distinct()方法来删除重复的元素。下面是一个示例代码: ```java public static void main(String[] args) { List&lt;Integer&gt; ...

    java jsonarray 踢重 去重操作

    在Java中处理JSON数据时,经常需要对JSON数组进行各种操作,其中去重是一个常见的需求。本文将详细介绍如何使用Java对`JSONArray`进行去重操作,并深入探讨背后的原理和技术细节。 ### JSON与Java JSON...

    Java数组去重 集合List去重的常用方法总结

    下面将详细介绍两种常用的数组去重方法。 ##### 方法一:For双循环法 这种方法通过两层循环来检查数组中的元素是否重复。其主要步骤如下: 1. **初始化变量**:声明一个整型变量`index`,用于记录不重复元素的...

    Java中对List去重 Stream去重的解决方法

    Java中List去重和Stream去重的解决...List去重是Java中的一种常见操作,我们可以使用HashSet、Stream或手动去重等方法来实现List去重,但无论哪种方法,我们都需要正确地重写hashCode和equals方法,以便正确地去重。

    Java实现对两个List快速去重并排序操作示例

    一、List去重操作 在Java中,我们可以使用HashSet来实现List的去重操作。HashSet是一种不允许重复元素的集合,因此我们可以将List中的元素添加到HashSet中,然后将HashSet转换回List,以达到去重的目的。 例如,...

    Java中List集合对象去重及按属性去重的8种方法

    【Java中List集合对象去重及按属性去重的8种方法】 在Java编程中,当我们处理包含重复元素的List时,有时需要去除其中的重复项。以下文章将详细介绍8种针对List集合对象去重的方法,包括基于对象整体以及按特定属性...

    如何实现java8 list按照元素的某个字段去重

    这两种方法都可以有效地实现基于`name`字段的去重。需要注意的是,第一种方法会保持去重后的元素顺序,而第二种方法则不保证顺序。在实际应用中,应根据具体需求选择合适的方法。 总的来说,Java 8的Stream API为...

    Java List中数据的去重

    但是,需要注意的是,在将List集合转换为Set集合时,需要考虑两种情况:一种是List集合中的数据类型是基本数据类型,另一种是List集合中的数据类型是对象类型。 基本数据类型 如果List集合中的数据类型是基本数据...

    java 去除重复元素

    本文将详细介绍如何在Java中去除重复元素,主要关注数组和列表这两种常见数据结构。 一、数组去重 1. 使用HashSet HashSet是一个不允许有重复元素的集合,当我们尝试将一个数组中的所有元素添加到HashSet时,它会...

    java集合与排序详解

    它提供了一种统一的方式来存储和操作数据,简化了编程的难度。集合框架的主要组成部分包括 Collection、List、Set、Map 等。 1.1 容器简介 容器是一种基本的数据结构,用于存储和操作数据。 Java 中的容器可以分为...

    java8 多条件过滤、去重

    总结来说,Java 8的Stream API提供了一种强大的方式来处理集合数据,包括多条件过滤和分组。这些功能使我们能够以声明式编程的方式,更优雅地处理数据过滤和组织,提高了代码的可读性和效率。在实际开发中,熟练掌握...

    【IT十八掌徐培成】Java基础第24天-05.内连接-外链接-集合-去重查询.zip

    内连接是数据库查询的一种方式,它返回两个表中存在匹配关系的记录。在Java中,我们通常通过JDBC(Java Database Connectivity)来实现SQL查询,其中包括内连接的操作。例如,我们可以使用`JOIN`关键字来连接两个...

    Java判断2个List集合是否相等(不考虑元素的顺序)

    Java是一种面向对象的编程语言,它提供了许多有用的集合类来存储和操作数据,其中List集合是最常用的集合之一。在实际开发中,我们经常需要判断两个List集合是否相等,不考虑元素的顺序。今天,我们将探讨如何在Java...

    Java Map、List、Set Swing 英文词频统计

    ArrayList和LinkedList是List的两种常见实现。在这个应用中,List可能用于临时存储处理的单词,或者记录单词的出现顺序。如果需要频繁地在列表末尾添加元素,ArrayList通常是更好的选择;而如果需要频繁地在任意位置...

    java 实现多个list 合并成一个去掉重复的案例

    总结,Java提供了多种方式来合并List并去除重复元素,包括传统的集合操作和Java 8引入的Stream API。选择哪种方法取决于性能需求、代码可读性以及数据结构的复杂性。对于简单的整型或基本类型列表,使用`addAll()`和...

    java模拟大乐透开奖学习案例test.txt

    - 创建两个`ArrayList`对象`list1`和`list2`,分别用于存储前区和后区的数字。 - `List&lt;Integer&gt; list1 = new ArrayList();` - `List&lt;Integer&gt; list2 = new ArrayList();` - **随机数生成与去重**: - 使用`...

Global site tag (gtag.js) - Google Analytics