自己写的,缺点是从前往后删除,而且每次循环重新生成subList感觉比较浪费资源,请高手斧正。
- package com.cn.reviev;
- import java.util.*;
- /**
- * List删除重复元素
- * 注:list的contain方法底层也是用的equals方法,本例用的是String,对于其他对象,则重写equals方法。
- */
- public class ArrayListRemoveSame {
- public static void main(String[] args) {
- ArrayList<String> al=new ArrayList<String>();
- al.add("fooABC");
- al.add("fooABD");
- al.add("fooABE");
- al.add("fooABD");
- al.add("fooABC");
- removeSame(al);//调用函数删除
- System.out.println(al);
- }
- private static void removeSame(ArrayList<String> al) {
- ListIterator<String> lit=al.listIterator();
- while(lit.hasNext()){
- String s=lit.next();
- int index=lit.previousIndex()+1;//获得当下元素的角标
- if(al.subList(index,al.size()).contains(s)){//如果从这个元素开始到结尾的子List中包含有相同元素,则可以删除
- lit.remove();//这里必须用ListIterator
- }
- System.out.println(s);
- }
- }
- }
复制代码 |
|