所有我需要的是排序是不使用内置的Java分拣机的ArrayList的最简单的方法。目前,我将ArrayList更改为一个Array,并使用了一个内联排序代码,但后来我需要调用一些元素,ArrayList更容易实现。如何排序的ArrayList
回答
假设一个ArrayList<String> a
...
最简单的(但我猜这是你在说什么,你不能使用):
Collections.sort(a);
下一个最简单的(但浪费):
a = new ArrayList<String>(new TreeSet<String>(a));
TreeSet将消除任何重复的字符串。 –
检查Comparator
在java中。您可以使用此实现自己的排序,并使用Collections.sort(..)
使用自己的排序ArrayList的Comparator
“比较器”本身并没有进行任何排序;它只定义了排序。他仍然需要调用一个使用“Comparator”(或“Comparable”接口)的排序函数来确定如何排序。 –
yes agree ..这就是为什么我要求检查Collections类。 – raddykrish
他特别提到他不能使用内置分拣机。 –
如果我没有记错,当你拉一个元素出的ArrayList中的它的动作元素的休息下来全自动。如果你做一个循环,查找最低值并将其拉出,然后将它放在arrayList的末尾。在索引的每个通行证上。少用一个。因此,在10个元素列表中,您将看到所有10个元素都取最小的元素并将其追加到最后。然后你会看到前九个,并把它的最低点附加到最后。然后第8个这样,直到列表排序。
请注意,这是最糟糕的情况'O(n!)',这是相当糟糕的时间。有许多[排序算法](http://en.wikipedia.org/wiki/Sorting_algorithms)会表现更好。 –
是的,但他确实要求最简单的方法来做到这一点。我猜想,即使这被标记为Java它也是作业,他只是需要一种方法来得到它的排序。有更好的方法,但如果他在这里问他可能不知道如何使用这些。假设,这就是我读/解释问题的方式。 –
你可以使用匿名排序。
Collections.sort(<ArrayList name>, Comparator<T>() {
public int compare(T o1, T o2) {
.....
....
}
});
其中T是要排序(即字符串,对象) 和简单地实现Comparator接口,以自己的需要
他特别提到他不能使用内置分拣机。 –
“内置一种”假设类型是指Collections.sort( )和你的罚款你已经实现了排序算法,你可以转换你的数组排序为ArrayList
ArrayList list = new ArrayList(Arrays.asList(sortedArray));
或者,你可以重写你的排序算法用List(如一个ArrayList工作),而不是的通过使用get(int index)
和set(int index, E element)
方法的阵列。
+1是作为响应OP的约束的第一个答案。如果需要,OP可以首先将一个ArrayList转换为一个数组(使用ArrayList的toArray(T [] a)'方法),然后创建一个新的ArrayList,或者清除并重新填充原始数组(使用'addAll Arrays.asList(sortedArray)')。 –
如果你是为了你自己的数组进行排序,那么最简单的算法之一是冒泡排序。这可以通过对数组进行多次遍历,比较相邻的元素对,如果左侧的元素大于右侧的元素,则交换它们。
由于这是家庭作业,我要把它留给你找出休息。从可视化你的算法开始,然后考虑你的算法需要做多少次通过,以及每次通过需要开始的位置。然后编码。
您还需要了解和解决的问题,你如何比较一对数组的元素:
- 如果这些元素是基本类型的实例,您只需使用一个关系运算符。
- 如果元素是引用类型的情况下,你需要使用两
Comparable
或Comparator
接口。在javadocs中查找它们。(看他们是你的作业的一部分...)
排序通过命令提示符传递的参数;不使用Arrays.sort
public class Sort {
public static void main(String args[])
{
for(int j = 0; j < args.length; j++)
{
for(int i = j + 1; i < args.length; i++)
{
if(args[i].compareTo(args[j]) < 0)
{
String t = args[j];
args[j] = args[i];
args[i] = t;
}
}
System.out.println(args[j]);
}
}
}
使用的Array.sort
import java.util.*;
public class IntegerArray {
public static void main(String args[])
{
int[] num=new int[]{10, 15, 20, 25, 12, 14};
Arrays.sort(num);
System.out.println("Ascending order: ");
for (int i=0; i<num.length; i++)
System.out.print(num[i] + " ");
}
}
这里是一个 “简单” 的快速排序实现:
public Comparable<Object>[] quickSort(Comparable<Object>[] array) {
if (array.length <= 1) {
return array;
}
List<Comparable<Object>> less = new ArrayList<Comparable<Object>>();
List<Comparable<Object>> greater = new ArrayList<Comparable<Object>>();
Comparable<Object> pivot = array[array.length/2];
for (int i = 0;i < array.length;i++) {
if (array[i].equals(pivot)) {
continue;
}
if (array[i].compareTo(pivot) <= 0) {
less.add(array[i]);
} else {
greater.add(array[i]);
}
}
List<Comparable<Object>> result = new ArrayList<Comparable<Object>>(array.length);
result.addAll(Arrays.asList(quickSort(less.toArray(new Comparable<Object>[less.size()]))));
result.add(pivot);
result.addAll(Arrays.asList(quickSort(greater.toArray(new Comparable<Object>[greater.size()]))));
return result.toArray(new Comparable<Object>[result.size()]);
}
与阵列和单建的最后一个操作结果可以使用System.arraycopy
来增强。
- 1. 如何排序ArrayList?
- 2. 如何排序ArrayList降序
- 3. 如何排序多个arraylist
- 4. Bean的Arraylist的排序Arraylist
- 5. 排序的ArrayList
- 6. 排序的ArrayList
- 7. ArrayList的排序
- 8. 排序的ArrayList
- 9. 排序ArrayList的泛型ArrayList
- 10. 如何排序的Java的ArrayList
- 11. 排序的ArrayList的
- 12. 我如何排序arrayList中的对象?
- 13. 如何排序对象的ArrayList?
- 14. Android的 - 如何按日期排序arrayList?
- 15. 如何排序二维的ArrayList
- 16. 我如何排序的ArrayList hasmap
- 17. 如何排序对象的ArrayList?
- 18. 如何ArrayList的数据进行排序
- 19. 排序的ArrayList中
- 20. 排序ArrayList?
- 21. ArrayList排序Android
- 22. 我如何排序我的arraylist按字母顺序排列
- 23. 如何排序ArrayList <Object>按升序排序android
- 24. 如何在java中对arraylist排序
- 25. 如何排序用户在ArrayList中
- 26. 如何在实现Parcelable时排序ArrayList
- 27. 如何对类别Arraylist进行排序?
- 28. 如何维护一个ArrayList排序?
- 29. Java - 如何排序这个ArrayList?
- 30. 合并两个排序的ArrayList到一个ArrayList中排序
“内置Java分类器”是什么意思?为什么你不想使用它? –
我无法使用它,因为我打算自己编码。我的意思是collections.sort,它是内置的。 XD –
“意味着自己编码”?如果这是家庭作业,请用[家庭作业]标记标记。 –