黑马程序员技术交流社区

标题: List删除重复元素Demo [打印本页]

作者: sven556677    时间: 2015-8-23 10:12
标题: List删除重复元素Demo
自己写的,缺点是从前往后删除,而且每次循环重新生成subList感觉比较浪费资源,请高手斧正。
  1. package com.cn.reviev;
  2. import java.util.*;
  3. /**
  4. * List删除重复元素       
  5. * 注:list的contain方法底层也是用的equals方法,本例用的是String,对于其他对象,则重写equals方法。
  6. */
  7. public class ArrayListRemoveSame {
  8.         public static void main(String[] args) {
  9.                 ArrayList<String> al=new ArrayList<String>();
  10.                 al.add("fooABC");
  11.                 al.add("fooABD");
  12.                 al.add("fooABE");
  13.                 al.add("fooABD");
  14.                 al.add("fooABC");
  15.                 removeSame(al);//调用函数删除
  16.                 System.out.println(al);
  17.         }

  18.         private static void removeSame(ArrayList<String> al) {
  19.                 ListIterator<String> lit=al.listIterator();
  20.                 while(lit.hasNext()){
  21.                         String s=lit.next();
  22.                         int index=lit.previousIndex()+1;//获得当下元素的角标
  23.                         if(al.subList(index,al.size()).contains(s)){//如果从这个元素开始到结尾的子List中包含有相同元素,则可以删除
  24.                                 lit.remove();//这里必须用ListIterator
  25.                         }
  26.                         System.out.println(s);
  27.                 }
  28.         }
  29. }
复制代码

作者: sven556677    时间: 2015-8-23 10:28
晕~一看后面的内容,老师也写了一个。返回的是新List




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