黑马程序员技术交流社区

标题: 求解去重复 [打印本页]

作者: 我干阿衰    时间: 2015-5-10 21:07
标题: 求解去重复
import java.util.ArrayList;

/*
* 需求:通过ArrayList集合存储多个字符串元素对象,并去除集合中重复的元素对象
*                
*/
public class ArrayListTest {
        public static void main(String[] args) {
                ArrayList list = new ArrayList();
               
                //添加元素
                list.add("范冰冰");
                list.add("李晨");
                list.add("李晨");
                list.add("李晨");
                list.add("范冰冰");
               
                //通过选择排序算法,实现集合中去除重复元素
                for (int i = 0; i < list.size()-1; i++) {
                        for (int j = i+1; j < list.size(); j++) {
                                //list.get(i)  与 list.get(j)
                                if (list.get(i).equals(list.get(j))) {
                                        list.remove(j);
                                        //j--;没有j--的时候为什么重复去不了
                                }
                        }
                }
               
                System.out.println(list);
        }
//结果:[范冰冰, 李晨, 李晨]
作者: ye646682485    时间: 2015-5-10 21:41
  1. import java.util.*;
  2. class        ArrayListTest1
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 ArrayList al= new ArrayList();
  7.                 al.add("java01");
  8.                 al.add("java02");
  9.                 al.add("java02");
  10.                 al.add("java03");
  11.                 al.add("java04");
  12.                 al.add("java05");
  13.                 al.add("java05");
  14.                 System.out.println("旧的"+al);
  15.                 RemoveMore rm = new RemoveMore();
  16.                 Object s =rm.Remove(al);
  17.                 System.out.println("新的"+s);
  18.         }
  19. }
  20. class RemoveMore
  21. {
  22.         private ArrayList arraylist ;
  23.         RemoveMore()
  24.         {
  25.                 arraylist = new ArrayList();
  26.         }
  27.         public ArrayList Remove(ArrayList al)
  28.         {
  29.                
  30.                 ListIterator li =al.listIterator();
  31.                 while(li.hasNext())
  32.                 {
  33.                         Object obj=li.next();//此循环next最好就一次
  34.                         if(!arraylist.contains(obj))
  35.                                 arraylist.add(obj);
  36.                 }
  37.                 /*
  38.                 for(ListIterator li = al.listIterator();li.hasNext();)
  39.                 {
  40.                         Object obj = li.next();
  41.                         if(!arraylist.contains(obj))
  42.                                 arraylist.add(obj);
  43.                 }
  44.                 */
  45.                 return arraylist;
  46.         }
  47. }
复制代码


作者: 肖某    时间: 2015-5-10 21:50
同求,知道之后告诉我啊
作者: 潘成旺    时间: 2015-5-10 21:56
你可以用TreeSet做转换,将ArrayList遍历存进TreeSet比较器按照条件比较,存储完毕相同的自然就去掉了,再遍历TreeSet将TreeSet集合中的元素重新存进ArrayList
作者: thoris    时间: 2015-5-10 22:50
如果没错的话 应该是size变了
当判断第一个李晨时  跟第二个李晨比较  第二个被去掉   数组长度变成了3(最后一个范冰冰已经干掉了)
这个时候j++ 就是3了  循环不执行

老毕视频里用的是 新建一个list集合  然后用contains 去判断 没有的话 就往里面添加




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2