黑马程序员技术交流社区
标题:
【Mr fan成长记】如何对一个List集合进行排序?
[打印本页]
作者:
bjfanxc
时间:
2014-3-28 00:01
标题:
【Mr fan成长记】如何对一个List集合进行排序?
下面有题目要求,我是这么写的,但是知道自己写的不是很好,求大神来给一点意见。
package com.itheima;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Random;
public class Test5 {
/**
* 编写程序,生成5个1至10之间的随机整数,存入一个List集合,编写方法对List集合进行排序
* (自定义排序算法,禁用Collections.sort方法和TreeSet),然后遍历集合输出。
* @author Administrator
*/
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
Random rd = new Random();
for(int i = 0;i<5;i++) {
list.add(rd.nextInt(9)+1);
}
Iterator<Integer> it = listSort(list).iterator();
while(it.hasNext()) {
System.out.print(it.next());
}
}
//list排序
public static ArrayList<Integer> listSort(ArrayList<Integer> list) {
Object[] arr = list.toArray();
ArrayList<Integer> newList = new ArrayList<Integer>();
arraySort(arr);
for(int x=0;x<arr.length;x++) {
newList.add((Integer) arr[x]);
}
return newList;
}
//数组排序
public static void arraySort(Object[] arr) {
for(int x=0;x<arr.length-1;x++) {
for(int y=x+1;y<arr.length;y++) {
if((Integer)arr[x]<(Integer)arr[y]){
swap(arr ,x,y);
}
}
}
}
//位置交换
public static void swap(Object[] arr,int x,int y) {
Object tmp = arr[x];
arr[x] = arr[y];
arr[y] = tmp;
}
}
复制代码
作者:
林发明
时间:
2014-3-28 11:05
我也是初学者,分享一下我的理解:ArrayList:底层的数据结构使用的数组结构
既然这样我们还是可以使用数组排序的思想 来排序ArrayList集合
我用自定义的选择排序方法 测试了一下 ok的
不知道符不符合要求:)
import java.util.*;
public class Test5 {
/**
* 编写程序,生成5个1至10之间的随机整数,存入一个List集合,编写方法对List集合进行排序
* (自定义排序算法,禁用Collections.sort方法和TreeSet),然后遍历集合输出。
* @author Administrator
*/
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
Random rd = new Random();
for(int i = 0;i<5;i++) {
list.add(rd.nextInt(9)+1);
}
System.out.println("++++++++排序前+++++++++++");
for(ListIterator<Integer> li = list.listIterator();li.hasNext(); )
{
System.out.println(li.next());
}
for (int x = 0;x<list.size()-1 ;x++ )
{
for (int y =x+1 ;y<list.size() ;y++ )
{
if(list.get(x)>list.get(y))
{
Integer temp;
temp = list.get(x);
list.set(x,list.get(y));
list.set(y,temp);
}
}
}
System.out.println("++++++++排序后+++++++++++");
for(ListIterator<Integer> li = list.listIterator();li.hasNext(); )
{
System.out.println(li.next());
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2