arraylist排序方法对比(如何给arraylist的元素排序,通过comparator比较器的方式来实现求高手解答!)
本文目录
- 如何给arraylist的元素排序,通过comparator比较器的方式来实现求高手解答!
- arrayList和linkedList在排序上的区别
- ArrayList排序的问题
- 如何实现对ArrayList排序 sort
- java如何对Arraylist数组进行排序(用comparable)
- c#arraylist 怎样排序
- ArrayList排序用什么排序方法最快
- java arraylist 集合排序问题
如何给arraylist的元素排序,通过comparator比较器的方式来实现求高手解答!
可以仿照这个写public class SampleComparator implements Comparator { public int compare(Object o1, Object o2) { return toInt(o1) - toInt(o2); }public static void main(String args) { Integer array = new Integer {11,22,33 }; Arrays.sort(array, new SampleComparator()); for (int i = 0; i 《 array.length; i++) { System.out.println(array); } }}
arrayList和linkedList在排序上的区别
ArrayList和LinkedList都实现了List接口,ArrayList的实现用的是数组,LinkedList是基于链表,ArrayList适合查找,LinkedList适合增删。ArrayList与LinkList两者的区别:ArrayList是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。相对于ArrayList,LinkedList的插入,添加,删除操作速度更快,因为当元素被添加到集合任意位置的时候,不需要像数组那样重新计算大小或者是更新索引。LinkedList比ArrayList更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素。但是要删除数据却是开销很大的,因为这需要重排数组中的所有数据。2) 相对于 ArrayList , LinkedList 插入是更快的。因为 LinkedList 不像 ArrayList 一样,不需要改变数组的大小,也不需要在数组装满的时候要将所有的数据重新装入一个新的数组,这是 ArrayList 最坏的一种情况,时间复杂度是 O(n) ,而 LinkedList 中插入或删除的时间复杂度仅为 O(1) 。 ArrayList 在插入数据时还需要更新索引(除了插入数组的尾部)。3) 类似于插入数据,删除数据时, LinkedList 也优于 ArrayList 。4) LinkedList 需要更多的内存,因为 ArrayList 的每个索引的位置是实际的数据,而 LinkedList 中的每个节点中存储的是实际的数据和前后节点的位置 ( 一个 LinkedList 实例存储了两个值: Node《E》 first 和 Node《E》 last 分别表示链表的其实节点和尾节点,每个 Node 实例存储了三个值: E item,Node next,Node pre) 。 什么场景下更适宜使用 LinkedList,而不用ArrayList1) 你的应用不会随机访问数据 。因为如果你需要LinkedList中的第n个元素的时候,你需要从第一个元素顺序数到第n个数据,然后读取数据。2) 你的应用更多的插入和删除元素,更少的读取数据 。因为插入和删除元素不涉及重排数据,所以它要比ArrayList要快。
ArrayList排序的问题
new Comparator《List《Object》》() { @Override public int compare(List《Object》 o1, List《Object》 o2) { return o1.get(0).compare(o2.get(0)); } }; /** * 在这个Object对象里写个比较方法,想怎么比就怎么比 */ @Override public int compare(Object o2){ return 0; }
这里的Object是指你DCF_Ref,因为不知道具体是什么就没给你全写上.
如何实现对ArrayList排序 sort
使用Collections.sort()传入ArrayList,会采用默认的方式进行排序(字典序)使用Collections.sort()传入ArrayList和自己实现Commparator接口的类的对象,实现自定义排序使用List.sort()传入自己实现Commparator接口的类的对象,实现自定义排序Comparator返回值在jdk1.7、jdk1.8里必须是一对相反数,如1和-1,不能是1和0.因为1.7的排序算法采用timsort,对返回值有严格要求
java如何对Arraylist数组进行排序(用comparable)
看代码:
import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;public class Demo { public static void main(String args) throws Exception { Pair pairs = { new Pair(0, 1), new Pair(2, 9), new Pair(7, 0), new Pair(8, 8), new Pair(8, 6), new Pair(9, 2), new Pair(1, 5), new Pair(8, 2), new Pair(9, 15), new Pair(9, 5) }; ArrayList《Pair》 pairList = new ArrayList《》(Arrays.asList(pairs)); System.out.println(“排序前:“); System.out.println(Arrays.toString(pairs)); Arrays.sort(pairs); // 对数组排序 System.out.println(“排序后:“); System.out.println(Arrays.toString(pairs)); System.out.println(“排序前:“); System.out.println(pairList); Collections.sort(pairList); // 对 ArrayList 排序 System.out.println(“排序后:“); System.out.println(pairList); }}// 继承 Comparable 接口排序该类是 “可排序的”// 《》 里面的是排序时与当前实例进行比较的实例的类型// 一般都和当前实例是同一个类型,比如这里就是 Pair 的实例 和 Pair 的实例比较class Pair implements Comparable《Pair》 { public int left; public int right; public Pair(int left, int right) { this.left = left; this.right = right; } @Override public String toString() { return ““; } // 排序规则,先按 left 排序,再按 right 排序 @Override public int compareTo(Pair that) { if (this.left 》 that.left) { return 1; } else if (this.left 《 that.left) { return -1; } else if (this.right 》 that.right) { return 1; } else if (this.right 《 that.right) { return -1; } return 0; }}
可以发现先按 left 排序,如果 left 相等,则按 right 排序
c#arraylist 怎样排序
可以使用ArrayList的Sort()方法使用Sort方法,可以对集合中的元素进行排序。Sort有三种重载方法,声明代码如下所示。public void Sort();//使用集合元素的比较方式进行排序public void Sort(IComparer comparer);//使用自定义比较器进行排序public void Sort(int index, int count, IComparer comparer)//使用自定义比较器进行指定范围的排序注意:为使用Sort方法进行排序,集合中的所有元素必须实现IComparable接口,否则,将抛出异常。
ArrayList排序用什么排序方法最快
List list=new ArrayList();list.add(a);...........add(z);Collections.sort(list);只用最后一句话就可以了.
java arraylist 集合排序问题
你可以使用Collections 提供的sort方法对ArrayList进行排序,sort方法提供了一个Comparator接口类型的参数,这个参数中可以自定义排序规则你可以自定义一个类实现Comparator接口,在里面编写你需要的排序规则,然后通过以下方式排序ArrayListCollections.sort(arraylist,自定义排序规则对象);sortpublic static 《T》 void sort(List《T》 list, Comparator《? super T》 c)根据指定比较器产生的顺序对指定列表进行排序。此列表内的所有元素都必须可使用指定比较器相互比较(也就是说,对于列表中的任意 e1 和 e2 元素,c.compare(e1, e2) 不得抛出 ClassCastException)。此排序被保证是稳定的:不会因调用 sort 而对相等的元素进行重新排序。排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的 n log(n) 性能。 指定列表必须是可修改的,但不必是可大小调整的。此实现将指定列表转储到一个数组中,并对数组进行排序,在重置数组中相应位置每个元素的列表上进行迭代。这避免了由于试图原地对链接列表进行排序而产生的 n2 log(n) 性能。参数:list - 要排序的列表。c - 确定列表顺序的比较器。null 值指示应该使用元素的自然顺序。抛出:ClassCastException - 如果列表中包含不可使用指定比较器相互比较 的元素。UnsupportedOperationException - 如果指定列表的列表迭代器不支持 set 操作。另请参见:Comparatorjava.util 接口 Comparator《T》类型参数:T - 此 Comparator 可以比较的对象类型
更多文章:

软件java是什么意思(JAVA是什么软件主要是干什么用的)
2025年3月13日 10:20

CSS中font是什么意思?求美国加州Fontana和Bloomington这两个城市的气候
2025年3月7日 13:00

domino(如何安装或删除domino服务器作为Windows的服务)
2025年2月28日 08:50

framework笔记本官网(win7笔记本电脑程序与功能这么没有net framework)
2025年2月17日 14:20

modbustcp(安川modbustcp协议是直接可以使用么)
2025年3月18日 08:30

servu安装教程(怎样在虚拟机XP中安装Serv-u软件,利用Serv-u发布ftp站点)
2025年3月13日 21:20

fields音标(英语A CDR is composed of fields怎么翻译)
2025年4月2日 17:30

pycharm和eclipse选哪个(写python时用什么编辑器好)
2025年2月17日 09:10

js中 将 数字格式化为 小数点后保留2位 怎么弄?js格式化
2025年2月10日 15:50

the British Isles是什么意思?Isle怎么读
2025年3月29日 01:40