ArrayList去除重复数据,排序

去除重复数据

包括保持顺序和不保持顺序两个方法

注意:因为借用了HashSet,所以判断重复需要重写 T 的hashCode()和equals()方法

public class ListTools {

    /**
     * 删除重复元素,保持顺序
     * @param list
     */
    public static <T> void removeDuplicateWithOrder(List<T> list) {
        Set<T> set = new HashSet<T>();
        List<T> newList = new ArrayList<T>();
        for (Iterator<T> iter = list.iterator(); iter.hasNext();) {
            T element = iter.next();
            if (set.add(element))
                newList.add(element);
        }
        list.clear();
        list.addAll(newList);
    }
    /**
     * 删除重复元素,不保持顺序
     * @param list
     */
    public   static <T>  void  removeDuplicate(List<T> list)   {
        HashSet<T> h  =   new  HashSet<T>(list);
        list.clear();
        list.addAll(h);
    }
}

排序

使用Collections.sort(rootList, new ComparatorPermissions());


public class ComparatorPermissions implements Comparator<Permissions>{

    @Override
    public int compare(Permissions o1, Permissions o2) {
        return o2.getOrderSort().compareTo(o1.getOrderSort());//注意返回顺序,升序还是降序,两个调换位置即可
    }
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
arraylist面试题有很多,以下是一些常见的问题和回答: 1. Java 集合框架的主要接口是什么? ArrayList 和 LinkedList 有什么区别? Java 集合框架的主要接口是 Collection 接口。ArrayList 和 LinkedList 都实现了 List 接口,但它们的底层实现方式不同。ArrayList 是基于动态数组实现的,它可以快速访问任意索引的元素,但在插入和删除操作时效率较低。LinkedList 是基于双向链表实现的,它在插入和删除操作时效率较高,但在访问具体索引的元素时效率较低。 2. HashSet 和 TreeSet 有什么区别? HashSet 和 TreeSet 都是 Set 接口的实现类,它们都可以用来存储不重复的元素。HashSet 是基于哈希表实现的,它不保证元素的顺序,但是查找元素的速度很快。TreeSet 是基于红黑树实现的,它可以对元素进行排序,并且支持有序操作。 3. HashMap 和 TreeMap 有什么区别? HashMap 和 TreeMap 都是 Map 接口的实现类,它们都可以用来存储键值对。HashMap 是基于哈希表实现的,它不保证键值对的顺序,但是查找键值对的速度很快。TreeMap 是基于红黑树实现的,它可以对键进行排序,并且支持有序操作。 4. 什么是迭代器?如何使用它来遍历集合? 迭代器是用来遍历集合元素的对象。可以通过调用集合的 iterator() 方法来获取迭代器对象。然后可以使用 hasNext() 方法检查是否还有下一个元素,使用 next() 方法获取下一个元素。可以使用迭代器的 remove() 方法来删除当前元素。 5. 当开启多个线程操作 List 集合,向 ArrayList 增加元素,同时去除元素。最后输出 List 的所有数据,会出现几种情况? 在多线程环境下,向 ArrayList 增加和删除元素是不安全的。可能会出现并发修改异常 ConcurrentModificationException。如果要在多线程环境下安全地操作 List 集合,可以使用 Collections.synchronizedList 方法将 ArrayList 包装成线程安全的容器。 以上是一些常见的 ArrayList 面试题和回答,希望能对你有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值