A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

下面有题目要求,我是这么写的,但是知道自己写的不是很好,求大神来给一点意见。
  1. package com.itheima;

  2. import java.util.ArrayList;
  3. import java.util.Iterator;
  4. import java.util.Random;

  5. public class Test5 {

  6.         /**
  7.          * 编写程序,生成5个1至10之间的随机整数,存入一个List集合,编写方法对List集合进行排序
  8.          * (自定义排序算法,禁用Collections.sort方法和TreeSet),然后遍历集合输出。
  9.          * @author Administrator
  10.          */
  11.         public static void main(String[] args) {

  12.                 ArrayList<Integer> list = new ArrayList<Integer>();
  13.                 Random rd = new Random();
  14.                
  15.                
  16.                 for(int i = 0;i<5;i++) {
  17.                         list.add(rd.nextInt(9)+1);
  18.                 }
  19.                 Iterator<Integer> it = listSort(list).iterator();
  20.                 while(it.hasNext()) {
  21.                         System.out.print(it.next());
  22.                 }
  23.         }
  24.         //list排序
  25.         public static ArrayList<Integer> listSort(ArrayList<Integer> list) {
  26.                
  27.                 Object[] arr = list.toArray();
  28.                 ArrayList<Integer> newList = new ArrayList<Integer>();
  29.                 arraySort(arr);
  30.                 for(int x=0;x<arr.length;x++) {
  31.                         
  32.                         newList.add((Integer) arr[x]);
  33.                 }
  34.                 return newList;
  35.         }               
  36.         //数组排序
  37.         public static void arraySort(Object[] arr) {
  38.                 for(int x=0;x<arr.length-1;x++) {
  39.                         for(int y=x+1;y<arr.length;y++) {
  40.                                 if((Integer)arr[x]<(Integer)arr[y]){
  41.                                         swap(arr ,x,y);
  42.                                 }
  43.                         }
  44.                 }
  45.         }
  46.         //位置交换
  47.         public static void swap(Object[] arr,int x,int y) {
  48.                 Object tmp = arr[x];
  49.                 arr[x] = arr[y];
  50.                 arr[y] = tmp;
  51.         }
  52. }
复制代码

1 个回复

倒序浏览
我也是初学者,分享一下我的理解:ArrayList:底层的数据结构使用的数组结构
既然这样我们还是可以使用数组排序的思想 来排序ArrayList集合
我用自定义的选择排序方法 测试了一下  ok的
不知道符不符合要求:)


  1. import java.util.*;

  2. public class Test5 {

  3.         /**
  4.          * 编写程序,生成5个1至10之间的随机整数,存入一个List集合,编写方法对List集合进行排序
  5.          * (自定义排序算法,禁用Collections.sort方法和TreeSet),然后遍历集合输出。
  6.          * @author Administrator
  7.          */
  8.         public static void main(String[] args) {

  9.                 ArrayList<Integer> list = new ArrayList<Integer>();
  10.                 Random rd = new Random();
  11.                
  12.                
  13.                 for(int i = 0;i<5;i++) {
  14.                         list.add(rd.nextInt(9)+1);
  15.                 }
  16.                                 System.out.println("++++++++排序前+++++++++++");
  17.                 for(ListIterator<Integer> li = list.listIterator();li.hasNext(); )
  18.                                 {
  19.                                         System.out.println(li.next());
  20.                                 }

  21.                                 for (int x = 0;x<list.size()-1 ;x++ )
  22.                                 {
  23.                                         for (int y =x+1 ;y<list.size() ;y++ )
  24.                                         {
  25.                                                 if(list.get(x)>list.get(y))
  26.                                                 {
  27.                                                         Integer temp;
  28.                                                         temp = list.get(x);
  29.                                                         list.set(x,list.get(y));
  30.                                                         list.set(y,temp);
  31.                                                 }
  32.                                         }
  33.                                 }
  34.                                 System.out.println("++++++++排序后+++++++++++");
  35.                                 for(ListIterator<Integer> li = list.listIterator();li.hasNext(); )
  36.                                 {
  37.                                         System.out.println(li.next());
  38.                                 }
  39.         
  40.                 }
  41. }
复制代码
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马