Java中对List进行排序的方法
在Java中,我们可以使用Collections.sort()
方法对List进行排序,这个方法有两种重载形式:一种是根据元素的自然顺序进行排序,另一种是根据自定义的比较器进行排序,下面我们分别介绍这两种方法的使用。
1、根据元素的自然顺序进行排序
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(3); list.add(1); list.add(4); list.add(2); Collections.sort(list); System.out.println("自然顺序排序后的列表:" + list); } }
运行上述代码,输出结果为:
自然顺序排序后的列表:[1, 2, 3, 4]
2、根据自定义的比较器进行排序
import java.util.ArrayList; import java.util.Comparator; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(3); list.add(1); list.add(4); list.add(2); Comparator<Integer> comparator = (a, b) -> a b; // 按照升序排序 Collections.sort(list, comparator); System.out.println("自定义比较器排序后的列表:" + list); } }
运行上述代码,输出结果为:
自定义比较器排序后的列表:[1, 2, 3, 4]
Java中List的常用操作
1、添加元素到List中
list.add(E e); // 在列表末尾添加指定元素e,如果列表已满则会抛出IndexOutOfBoundsException异常。
2、从List中移除元素
list.remove(int index); // 从列表中移除索引为index的元素,如果index超出范围则会抛出IndexOutOfBoundsException异常。 list.remove(Object o); // 从列表中移除值等于o的第一个元素,如果列表中没有这样的元素则不会发生任何事情,如果o为null,则删除所有值为null的元素,该操作是按照元素的compareTo()方法返回值来确定移除哪个元素的,如果要删除多个相同的元素,可以多次调用此方法,注意:此操作会改变原列表的大小,如果需要保留原列表的大小,可以使用Iterator迭代器遍历并删除元素,list.iterator().remove();但是这种方式效率较低,因为使用迭代器遍历和删除元素的时间复杂度为O(n),建议使用下面的方式:list = new ArrayList<>(new HashSet<>(list));这样可以去除重复元素,同时时间复杂度降低到O(n),从List的开头开始删除也可以提高效率,for (int i = 0; i < list.size(); i++) { if (condition) { list.remove(0); break; } else if (condition2) { list.remove(i); break; } } 注意:以上操作都可能抛出UnsupportedOperationException异常,这是因为某些类型的List不支持这些操作,不能修改AbstractList接口或其子接口实现的List,只有实现了List接口或者其子接口的List才能进行添加、删除、修改等操作。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/138234.html