本帖最后由 刘文飞 于 2012-11-20 21:42 编辑
- import java.util.*;
- public class DeleteRepeat
- {
- public static void main(String[] args)
- {
- ArrayList al = new ArrayList();
- al.add("j1");
- al.add("j1");
- al.add("j1");
- al.add("j3");
- System.out.println("remain---" + delete(al));
- }
- public static ArrayList delete(ArrayList al)
- {
- for(int i = 0; i<al.size(); i++)
- {
- for(int j = 0; j<al.size(); j++)
- {
- if(al.get(i)==al.get(j)&&i!=j)
- {
- while(i>=al.size()){ //张学永大大给出的终极解决方式
- i--;
- }
- System.out.println("Delete---" + al.remove(j)); //@张学永 提醒,避免越界,将此处的remove(i)修改成remove(j)
- }
- }
- }
- return al;
- }
- }
复制代码 这个是我的,不需要另外创建一个容器来接收,貌似在空间上更高效啊.
下面这个是毕老师的:- import java.util.*;
- /*
- 去除ArrayList集合中的重复元素。
- */
- class ArrayListTest
- {
- 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("java02");
- al.add("java01");
- al.add("java02");
- al.add("java01");
- // al.add("java03");
- /*
- 在迭代时循环中next调用一次,就要hasNext判断一次。
- Iterator it = al.iterator();
- while(it.hasNext())
- {
- sop(it.next()+"...."+it.next());
- }
- */
- /**/
- sop(al);
- al = singleElement(al);
- sop(al);
- }
- public static ArrayList singleElement(ArrayList al)
- {
- //定义一个临时容器。
- ArrayList newAl = new ArrayList();
- Iterator it = al.iterator();
- while(it.hasNext())
- {
- Object obj = it.next();
- if(!newAl.contains(obj))
- newAl.add(obj);
- }
- return newAl;
- }
- }
复制代码 重点是求版主大大们给分,虽然没多大技术含量,也是一成果啊{:soso__8961432591078930798_3:}
还有就是我的代码一放到论坛里怎么就没个人样了,前面空格全没了,求解决?
|