黑马程序员技术交流社区
标题:
ArrayList去除重复元素的问题
[打印本页]
作者:
清心玉质
时间:
2013-7-19 20:35
标题:
ArrayList去除重复元素的问题
本帖最后由 清心玉质 于 2013-7-19 21:55 编辑
学习的时候顺手敲下了下面代码,功能时实现去除ArrayList重复元素,可是却没有实现。我检查好几遍也没检查出来,望各位帮忙看看。
import java.util.*;
class ArrayListDemo
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java03");
al.add("java02");
al.add("java03");
al.add("java02");
al.add("java01");
sop(al);
al = singleElement(al);
sop(al);
}
public static ArrayList singleElement(ArrayList al)
{
//定义一个临时容器
ArrayList nl = new ArrayList();
Iterator it = al.iterator();
while (it.hasNext())
{
Object obj = it.next();
if(!nl.contains(obj));
nl.add(obj);
}
return nl;
}
}
作者:
Rainbow
时间:
2013-7-19 21:00
package com.itheima;
import java.util.*;
public class ArrayListDemo {
public static void sop(Object obj) {
System.out.println(obj);
}
public static void main(String[] args) {
ArrayList al = new ArrayList();
al.add("java01");
al.add("java03");
al.add("java02");
al.add("java03");
al.add("java02");
al.add("java01");
sop(al);
sop(singleElement(al));
}
public static ArrayList singleElement(ArrayList al) {
// 定义一个临时容器
ArrayList nl = new ArrayList();
Iterator it = al.iterator();
while (it.hasNext()) {
Object obj = it.next();
if (!nl.contains(obj)){
nl.add(obj);
}
}
return nl;
}
}
复制代码
作者:
月亮人生
时间:
2013-7-19 21:01
import java.util.*;
class ArrayListDemo
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java03");
al.add("java02");
al.add("java03");
al.add("java02");
al.add("java01");
sop(al);
al = singleElement(al);
sop(al);
}
public static ArrayList singleElement(ArrayList al)
{
//定义一个临时容器
ArrayList nl = new ArrayList();
Iterator it = al.iterator();
while (it.hasNext())
{
Object obj = it.next();
if(!nl.contains(obj))
nl.add(obj);
}
return nl;
}
}
在if语句后面多了一个分号,下面的语句没在if语句中。。。
复制代码
作者:
清心玉质
时间:
2013-7-19 21:55
非常感谢!!
作者:
深圳在漂移
时间:
2013-7-20 11:26
方法一:循环元素删除 (使用的方式FOR循环操作。不建议使用大数据量的转换。。n*n的循环量)
// 删除ArrayList中重复元素
public static void 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);
}
}
}
System.out.println(list);
}
方法二:通过HashSet剔除 (本人喜欢使用的方式:使用的是hash数组不能产生重复数据的特性,来转换LIST)// 删除ArrayList中重复元素
HashSet hSet = new HashSet(list);
list.clear();
list.addAll(hSet);
System.out.println(list);
方法三: 删除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);
}
作者:
yangqing
时间:
2013-7-20 13:15
while (it.hasNext())
{
Object obj = it.next();
if(!nl.contains(obj));
nl.add(obj);
}
上面的 if 没有限定范围 。。 。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2