黑马程序员技术交流社区
标题:
集合问题
[打印本页]
作者:
余善航
时间:
2013-1-9 21:53
标题:
集合问题
本帖最后由 张向辉 于 2013-1-16 12:18 编辑
//需求:将一个集合中的元素取出存入另一个集合中并且消除重复项。
//问题:为什么我的程序运行出来的结果总是还有重复项:[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;
}
}
作者:
张云杰
时间:
2013-1-9 22:18
public static List method(ArrayList a) {
ArrayList a1 = new ArrayList();//这里new 的话 初始化 为空..
Iterator it = a.iterator();
while (it.hasNext()) {
if (!a1.contains(a)) { //空的话 这里进行判断, 成立
a1.add(it.next()); // 第一次执行的话 应该是 [jj, null, null, null, null, null, null, null, null, null]
// 一直到 你的a1的值 变成 [jj, kk, jj, ll, oo, jj, kk, jj]
// 这时候 已经包含了 与上面的List 的值一样了.. 所以答案是这个
// 因为你是把整个 a1 这个List拿来包含了.. 如果是取a1的下标 那就不一样了..
}
}
return a1;
}
作者:
黄锦成
时间:
2013-1-9 22:47
重点在红色部分,
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())
{
String s = (String)it.next();
if(!a1.contains(s))
{
a1.add(s);
}
}
return a1;
}
}
作者:
黑马吕世成
时间:
2013-1-10 09:40
你错的地方楼上都已经说得清楚了,if语句的判断条件有问题。
这里我帮你修改了下,用增强for循环遍历的。
QQ截图20130110093803.png
(6.92 KB, 下载次数: 142)
下载附件
2013-1-10 09:39 上传
作者:
肖亚光
时间:
2013-1-10 13:08
import java.util.*;
public class Stu
{
public static void main(String[] args) throws Exception
{
ArrayList<String> list = new ArrayList<String>();
list.add("jj");
list.add("kk");
list.add("jj");
list.add("ll");
list.add("oo");
list.add("jj");
list.add("kk");
list.add("jj");
sop(method(list));
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static Set method(ArrayList list)
{
Set<String> set = new HashSet<String>();
for(Object obj : list)
set.add(obj.toString());
return set;
}
}
既然要去重 为什么不用Set呢.........
感觉要是写最好还是写规范了好
类开始字母至少要大写吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2