1.分析以下需求,并用代码实现:
(1)生成10个1至100之间的随机整数(不能重复),存入一个List集合(可以先不适用泛型,泛型明天讲)
(2)编写方法对List集合进行排序,禁用Collections.sort方法和TreeSet
(2)然后利用迭代器遍历集合元素并输出
(3)如:15 18 20 40 46 60 65 70 75 91
package test1;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
import java.util.Random;
/*
* 思路:
* 一、新建一个List容器
* 一、new Random(long L)类的一个对象
* 二、构建十次循环,依次用Random类的实例对象获取对应随机整数,采用contains方法排重
* 三、将符合排重要求的数字放入容器中,随机数若不符合排重,就将循环计数器减一再来一次
* 四、通过选择排序或者冒泡排序对List元素进行排序
* 五、遍历并输出
*/
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>(); //新建一个list容器
Random r = new Random(); //新建一个随机数对象
for (int i = 0; i < 10; i++) { //构建for循环,十次
Integer in = r.nextInt(100) + 1; //手动装箱生成的随机数
if (!list.contains(in)) //判断,如果list容器中不包含这个整数
list.add(in); //将这个整数加入容器中
else //否则
i--; //i自减1,再来一次循环随机数
}
selectSort(list); //调用选择循环封装
ListIterator<Integer> it = list.listIterator(); //生成迭代器
while (it.hasNext()) //迭代器判断是否有下一个对象
System.out.print(it.next() + " "); //输出这个对象
}
public static void selectSort(List<Integer> list) { //选择循环封装,参数为list容器
for (int i = 0; i < (list.size() - 1); i++) { //外部循环,上限为容器对象数减一
for (int j = i + 1; j < list.size(); j++) { //内部循环,上限为容器对象数
if (list.get(i) > list.get(j)) { //选择排序:分别用第"0"至"list.size()-1"位数和其他数比较
Integer temp = list.get(i);
list.set(i, list.get(j)); //如果相比较的两个数序列不正确,给予调换
list.set(j, temp);
}
}
}
}
}
|
|