黑马程序员技术交流社区
标题:
java集合中的一个小问题。。。
[打印本页]
作者:
黑马任雪刚
时间:
2012-5-24 16:58
标题:
java集合中的一个小问题。。。
//需求:将一个集合中的元素取出存入另一个集合中并且消除重复项。
//问题:为什么我的程序运行出来的结果总是还有重复项:[jj, kk, jj, ll, oo, jj, kk, jj]。
import java.util.*;
public class stu
{
public static void main(String[] args)
{
ArrayList a = new ArrayList();
a.add("jj");
a.add("kk");
a.add("jj");
a.add("ll");
a.add("oo");
a.add("jj");
a.add("kk");
a.add("jj");
sop(method(a));
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static List method(ArrayList a)
{
ArrayList a1 = new ArrayList();
Iterator it = a.iterator();
while(it.hasNext())
{
if(!a1.contains(a))
{
a1.add(it.next());
}
}
return a1;
}
}
作者:
云惟桉
时间:
2012-5-24 17:06
楼主要仔细学习啊,这个问题和ArrayList的概念有关。
先补一补基本概念吧,不然使用起来问题会很严重的
作者:
小小企鹅
时间:
2012-5-24 17:25
可以用set来消除重复项
public Set method(List list){
Set set = new TreeSet();
set.addAll(list);
System.out.println(set);
return set;
}
作者:
田林
时间:
2012-5-24 18:37
楼主迭代的时候出了点错误!
Iterator it = a.iterator();
while(it.hasNext())
{
if(!a1.contains(a)) // a1集合不可能包含a集合,所以每次都会执行添加动作。最后a1中的内容也就与a集合相同了。
{
a1.add(it.next());
}
}
return a1;
修改代码:
Iterator it = a.iterator();
while (it.hasNext()) {
String str=(String)it.next(); //获取每一次的迭代的元素,判断它是否在集合a1中。
if(!a1.contains(str)){
a1.add(str);
}
}
return a1;
作者:
黑马张健
时间:
2012-5-24 18:40
import java.util.*;
public class Test2 {
public static void main(String[] args) {
ArrayList a = new ArrayList();
a.add("jj");
a.add("kk");
a.add("jj");
a.add("ll");
a.add("oo");
a.add("jj");
a.add("kk");
a.add("jj");
sop(a);
ArrayList list = new ArrayList();
HashSet hashsetObject=new HashSet(a);
Iterator iteratorObject=hashsetObject.iterator();
while(iteratorObject.hasNext()){
String str=(String)iteratorObject.next();
list.add(str);
}
sop(list);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
打印结果:
[jj, kk, jj, ll, oo, jj, kk, jj]
[jj, kk, oo, ll]
作者:
niceBoy
时间:
2012-5-24 18:45
楼上OK的了,或者直接用set集合存吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2