我如何才能编写一个排序方法,它将与实现comparable
的任何类的collection
一起工作?我查看了collections.sort()
的源代码,它的方法签名中有一些语法我不理解。
public static <T extends Comparable<? super T>> void sort(List<T> list) {
Object[] a = list.toArray();
Arrays.sort(a);
ListIterator<T> i = list.listIterator();
for (int j=0; j<a.length; j++) {
i.next();
i.set((T)a[j]);
}
}
下面是我对如何编写sortnone
方法的最佳(可悲的)猜测,该方法不对collection
进行排序,但有正确的方法头来进行排序。我将使用sortnone.sort(myCollection)
调用它,其中myCollection
是实现comparable
的类的collection
的任何类的实例(假设之前导入了com.tenembasj.sort.*
,请参阅更多信息)。
package com.tenembasj.sort;
public class SortNone {
public static<T> void sort(Collection<E> collection) { //don't know how to require the object (is it T or E?) to implement Comparable
//code to sort
//would I have to use collection.size(), .get(i), .set(i), and such to edit the class implementing Collection?
}
}
此外,我想添加一个sort
方法,它为比较器
添加一个参数,我只需要知道形参是什么。我想,一旦我知道如何编写常规的sort
时,我就能搞清楚实现了。
同样,我正在尝试编写自己的排序方法,而不使用collections.sort()
、arrays.sort()
或任何java.util
方法。你可能会说“不要推倒重来”,但我只是在努力学习。
更多信息
我想在完成后将这些方法导出到一个jar中,并在以后的项目中将它们作为一个库导入。我制作了一个新项目(在Eclipse中),创建了一个名为com.tenembasj.sort
的包,并将添加诸如mergeSort
之类的类。我相信这是标准的命名惯例,但如果不是,请告诉我。我的目标是能够在未来的任何项目中键入import com.tenembasj.sort.*
,并调用mergesort.sort(myCollection);
或mergesort.sort(myCollection,myComparator);
。
我如何才能编写一个排序方法,它将与实现Collection的任何类一起工作,并与实现Comparable的任何类一起工作呢?
为了编写一个可以应用于所有类型对象的函数,您必须编写一个泛型代码,就像上面从Collections.sort()源发布的代码一样。
假设你是一个初学者,最好的开始就是向generic学习,一口一口地吃掉大象。
扩展可比<?超级T>
表示T必须是可比较的对象。它可以是扩展可比
接口的object
类型,也可以是包含可比接口的任何对象。
sort(list
表示排序函数可以接受t
类型对象的任何list
作为参数。
public static <T extends Comparable<? super T>> void sort(List<T> list) {
// Copying the values from the List of objects to an array.
Object[] a = list.toArray();
// Applying the array.sort operation.
Arrays.sort(a);
// Setting the values from the sorted array to the listi of type T.
ListIterator<T> i = list.listIterator();
for (int j=0; j<a.length; j++) {
i.next();
i.set((T)a[j]);
}
}
从学习泛型开始
我对在Java中实现一个特殊的优先级队列变体很感兴趣,我希望这个优先级队列能够与泛型类型一起工作。在Java的集合对象中,存储具有某种排序的对象(例如PriorityQueue、TreeSet等),可以使用实现Compariable的类以及不一定实现Compariable的类,因为类的比较器传递给构造函数。 如何在优先级队列类中实现此功能?如果给我一个比较器,我是否必须根据类是否实现Compara
我正在研究一个扑克牌洗牌的问题,并找到了两个解决方案。 目标是将存储在阵列中的所有52张扑克牌作为卡对象进行洗牌。卡类具有与其关联的id和名称。 现在,一种方法是使用for循环迭代,然后在临时卡对象持有者和随机数生成器的帮助下,我们可以交换两个对象。这一直持续到我们到达一半的卡片。 另一种方法是使用随机生成器编号实现可比较的覆盖比较方法,因此每次调用该方法时都会得到随机响应。 你觉得哪条路更好?
我知道它已经被询问和回答了数百万次,但我仍然无法弄清楚为什么我在排序期间收到了违规。这是我的代码: 我收到了这个错误 有什么想法吗?
问题内容: 我有2个月的2个数据集,包括学生的姓名和分数。 我需要提供每个学生的2月分数,以及他/她2月分数的变化百分比。 我可以使用Java集合吗? 样本数据集: 输出应该是这样的 (名称:约翰,2月分数:80,百分比变化:100) (名称:玛丽,2月的分数:81,百分比变化:32.76) (名称:吉姆,2月的分数:82,百分比变化:57.69) (名称:利兹,2月的分数:84 ,百分比变化:N
可能重复:< br >使用多个键对Java对象排序 我找不到任何使用此方法的示例,所有示例都给出了第二个参数“null”。我听说这个方法用于根据一个以上的标准对类进行排序,但没有找到任何示例。 } 如果我想根据学生的名字对学生列表进行排序
本文向大家介绍为Python中的数值数据集编写排序算法?,包括了为Python中的数值数据集编写排序算法?的使用技巧和注意事项,需要的朋友参考一下 排序是指以特定格式排列数据。它使数据更具可读性,并且可以将数据搜索优化到很高的水平。有五种不同的排序算法。 气泡排序 合并排序 插入排序 贝壳类 选择排序 示例 这是一种基于比较的算法,其中比较每对相邻元素,如果元素顺序不正确,则将其交换。 输出结果