A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 刘文飞 于 2012-11-20 21:42 编辑
  1. import java.util.*;
  2. public class DeleteRepeat
  3. {
  4. public static void main(String[] args)
  5. {
  6. ArrayList al = new ArrayList();
  7. al.add("j1");
  8. al.add("j1");
  9. al.add("j1");
  10. al.add("j3");
  11. System.out.println("remain---" + delete(al));
  12. }
  13. public static ArrayList delete(ArrayList al)
  14. {
  15. for(int i = 0; i<al.size(); i++)
  16. {
  17. for(int j = 0; j<al.size(); j++)
  18. {
  19. if(al.get(i)==al.get(j)&&i!=j)
  20. {
  21. while(i>=al.size()){          //张学永大大给出的终极解决方式
  22.     i--;
  23.    }

  24. System.out.println("Delete---" + al.remove(j));       //@张学永  提醒,避免越界,将此处的remove(i)修改成remove(j)
  25. }
  26. }
  27. }
  28. return al;
  29. }
  30. }
复制代码
这个是我的,不需要另外创建一个容器来接收,貌似在空间上更高效啊.
下面这个是毕老师的:
  1. import java.util.*;

  2. /*
  3. 去除ArrayList集合中的重复元素。

  4. */

  5. class ArrayListTest
  6. {

  7. public static void sop(Object obj)
  8. {
  9. System.out.println(obj);
  10. }
  11. public static void main(String[] args)
  12. {
  13. ArrayList al = new ArrayList();

  14. al.add("java01");
  15. al.add("java02");
  16. al.add("java01");
  17. al.add("java02");
  18. al.add("java01");
  19. // al.add("java03");


  20. /*
  21. 在迭代时循环中next调用一次,就要hasNext判断一次。
  22. Iterator it = al.iterator();

  23. while(it.hasNext())
  24. {
  25. sop(it.next()+"...."+it.next());
  26. }
  27. */

  28. /**/
  29. sop(al);

  30. al = singleElement(al);

  31. sop(al);


  32. }

  33. public static ArrayList singleElement(ArrayList al)
  34. {
  35. //定义一个临时容器。
  36. ArrayList newAl = new ArrayList();

  37. Iterator it = al.iterator();

  38. while(it.hasNext())
  39. {
  40. Object obj = it.next();

  41. if(!newAl.contains(obj))
  42. newAl.add(obj);

  43. }

  44. return newAl;
  45. }
  46. }
复制代码
重点是求版主大大们给分,虽然没多大技术含量,也是一成果啊{:soso__8961432591078930798_3:}
还有就是我的代码一放到论坛里怎么就没个人样了,前面空格全没了,求解决?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

15 个回复

倒序浏览
楼主的想法是不错的,但是你的代码有点问题。如果你的加入顺序是这样的呢?
                ArrayList al = new ArrayList();
                al.add("j1");
                al.add("j1");
                al.add("j1");
                al.add("j3");
                al.add("j1");
这时候再用你的方法,会发生角标越界异常。
当把第三个“j1”删除后,size()等于2,但是你的 i 却已经是2了,所以会越界。
我也是刚学java,请多多指教。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
发代码的时候千万不要用高级模式  就用很小的那个谈出来的对话框发 代码就包括空格都出来了

回复 使用道具 举报
张学永 发表于 2012-11-20 19:28
楼主的想法是不错的,但是你的代码有点问题。如果你的加入顺序是这样的呢?
                ArrayList al = new ArrayLis ...

哥们这还叫刚学啊 这么深奥的问题都能回答出来   可见你是百年难得一遇的人才了
回复 使用道具 举报
本帖最后由 刘文飞 于 2012-11-20 20:56 编辑
张学永 发表于 2012-11-20 19:28
楼主的想法是不错的,但是你的代码有点问题。如果你的加入顺序是这样的呢?
                ArrayList al = new ArrayLis ...


解决方式:把删除的i改成j貌似可行了.{:soso__8961432591078930798_3:}
System.out.println("Delete---" + al.remove(j));
回复 使用道具 举报
惠晖 发表于 2012-11-20 19:49
发代码的时候千万不要用高级模式  就用很小的那个谈出来的对话框发 代码就包括空格都出来了

...

:hug:哦,原来是这样啊
回复 使用道具 举报
本帖最后由 刘文飞 于 2012-11-20 20:33 编辑
惠晖 发表于 2012-11-20 19:49
发代码的时候千万不要用高级模式  就用很小的那个谈出来的对话框发 代码就包括空格都出来了

...
这个得进到某个帖子里点那个发帖才会出现滴呢
回复 使用道具 举报
这个刚开始我试过了,改成 j 也是不OK的。。。原因和上面类似。
如果你的加入顺序是这样的,同样会越界。
ArrayList al = new ArrayList();
al.add("j1");
al.add("j1");
al.add("j3");
al.add("j1");
al.add("j1");
这个同样越界。
回复 使用道具 举报
惠晖 中级黑马 2012-11-20 21:09:46
9#
张学永 发表于 2012-11-20 21:02
这个刚开始我试过了,改成 j 也是不OK的。。。原因和上面类似。
如果你的加入顺序是这样的,同样会越界。
A ...

老大带带小弟啊 有没有QQ 丢个来撒  一个人学习好痛苦啊 没人指点 一个小问题能搞半天
回复 使用道具 举报
惠晖 中级黑马 2012-11-20 21:10:32
10#
刘文飞 发表于 2012-11-20 20:27
这个得进到某个帖子里点那个发帖才会出现滴呢

高级模式里有个纯文本模式 点上钩就好了
回复 使用道具 举报
惠晖 中级黑马 2012-11-20 21:11:49
11#
强烈2位高手甩个QQ出来
回复 使用道具 举报
惠晖 发表于 2012-11-20 21:10
高级模式里有个纯文本模式 点上钩就好了

哦,膜拜大神
回复 使用道具 举报
惠晖 发表于 2012-11-20 21:09
老大带带小弟啊 有没有QQ 丢个来撒  一个人学习好痛苦啊 没人指点 一个小问题能搞半天 ...

那天给你传API文档的就是我
回复 使用道具 举报
张学永 发表于 2012-11-20 21:02
这个刚开始我试过了,改成 j 也是不OK的。。。原因和上面类似。
如果你的加入顺序是这样的,同样会越界。
A ...

膜拜了:handshake
回复 使用道具 举报
张学永 发表于 2012-11-20 21:02
这个刚开始我试过了,改成 j 也是不OK的。。。原因和上面类似。
如果你的加入顺序是这样的,同样会越界。
A ...

分析了半天我才弄明白之前那个i为什么会变成2的.:L
回复 使用道具 举报
惠晖 发表于 2012-11-20 21:11
强烈2位高手甩个QQ出来

菜鸟级的qq844863921
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马