对ArrayList进行排序

由于我刚开始使用JAVA,我很好奇在JAVA中实现排序的最佳选择是什么(对于ArrayLists)。 下面我提供我的PHP代码。

public int cmp($a, $b) { if ( $a[0]  $b[0] ) return -1; else if ( $a[1]  $b[1] ) return -1; else return 0; } $selected = array(); for ($i=0; $i<$len; $i++) { $rank = getRank(); $cub = getCub_len(); $selected[] = array($rank,$cub); } uasort($selected, 'cmp') 

好吧,我在JAVA中编写了以下代码:

 ArrayList<ArrayList> selected = new ArrayList<ArrayList>(); ArrayList rank = new ArrayList(); ArrayList cub = new ArrayList(); for (int i=0; i<len; i++) { rank.add(getRank(i)); cub.add(getCub(i)); } selected.add(0,rank); selected.add(1,cub); 

如何以正确的方式对selected进行排序(类似于PHP函数cmp )?

试试这个例子:

 public static void main(String[] args) throws Exception { ArrayList listOfStringArrays = new ArrayList(); listOfStringArrays.add(new String[] {"x","y","z"}); listOfStringArrays.add(new String[] {"a","b","c"}); listOfStringArrays.add(new String[] {"m","n","o"}); Collections.sort(listOfStringArrays,new Comparator() { public int compare(String[] strings, String[] otherStrings) { return strings[1].compareTo(otherStrings[1]); } }); for (String[] sa : listOfStringArrays) { System.out.println(Arrays.toString(sa)); } /* prints out [a, b, c] [m, n, o] [x, y, z] */ } 
 Collections.sort(a); 

来源: 对ArrayList进行排序

试试这个解决方案

 public class SortArrayList{ public static void main(String args[]){ List unsortList = new ArrayList(); unsortList.add("CCC"); unsortList.add("111"); unsortList.add("AAA"); unsortList.add("BBB"); unsortList.add("ccc"); unsortList.add("bbb"); unsortList.add("aaa"); unsortList.add("333"); unsortList.add("222"); //before sort System.out.println("ArrayList is unsort"); for(String temp: unsortList){ System.out.println(temp); } //sort the list Collections.sort(unsortList); //after sorted System.out.println("ArrayList is sorted"); for(String temp: unsortList){ System.out.println(temp); } } } 
 for(int j = 0; j < myArray.size(); j++) { for (int i = j+1 ; i < myArray.size(); i++){ if(myArray.get(i)[2].compareTo(myArray.get(j)[2]) < 0){ String[] temp = myArray.get(j); myArray.set(j, myArray.get(i)); myArray.set(i, temp); } } } 

我正在使用第三个字段(myArray.get(j)[2])进行比较。 我希望这会对某人有所帮助。

在Java Collections中实现排序的最简单方法是使用Collections#排序方法。

它使用修改后的合并排序算法来完成工作。

重要的是,它只能对实现Comparable接口的类的对象进行排序,因此您可能需要考虑这一点。 实现此接口时,您应该知道最好考虑相关对象的自然顺序。 例如,字符串的字母顺序,如果您需要在特定上下文中以不自然的方式对其进行排序,请不要使用此接口。

为此,最好在调用方法时定义Comparator 。

执行此操作的方法是使用Collections类,并在列表上调用Collections.sort(java.util.List, java.util.Comparator) 。 这里记录在案。 这里的比较器是一个接口,您需要实现该接口以进行自定义排序。 要实现Comparator接口,您需要提供实现

int compare(T o1,T o2)boolean equals(Object obj)

使用PHP文件中已有的逻辑。