Java之List集合排序

本文详细介绍了一种在Java中生成不重复随机数的方法,并将其存入List集合,随后使用Collections.sort()方法进行排序,最后通过迭代器遍历并输出排序后的结果。此方法简洁高效,适用于需要生成随机序列并排序的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分析以下需求,并用代码实现:
(1)生成10个1至100之间的随机整数(不能重复),存入一个List集合
(2)编写方法对List集合进行排序
(2)然后利用迭代器遍历集合元素并输出
(3)如:15 18 20 40 46 60 65 70 75 91

代码:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.Random;

public class ListPaiXu {

	public static void main(String[] args) {
		//生成随机数
		Random random = new Random();
		//定义一个集合
		ArrayList<Integer> list = new ArrayList<>();
		//利用循环存进集合里
		for (int i = 0; i < 10; i++) {
			boolean flag = true;
			int num = random.nextInt(100)+1;
			for (int j:list) {
				if (j==num) {
					i--;
					flag = false;
					break;
				}
			}
			if (flag) {
				list.add(num);
			}
		}
		//排序
		Collections.sort(list);
		
//		System.out.println(list);
		
		//利用迭代器遍历集合元素并输出
		Iterator<Integer> it = list.iterator();
		while (it.hasNext()) {
			Object object = (Object) it.next();
			System.out.print(object+" ");
		}
		
		
	}
	
	
}

结果:
在这里插入图片描述
总结 :利用sort排序方法 要比遍历之后再选择排序简单很多,所以记住这个方法,
还有数组排序Arrays.sort();!!!

### JavaList 集合排序的方法 #### 使用 `Collections.sort` 和 `Comparable` 接口 对于实现了 `Comparable` 接口的对象,可以直接使用 `Collections.sort()` 方法来进行排序。此方法会依据对象的自然顺序进行升序排列。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class CollectionsSortExample { public static void main(String[] args) { List<String> fruits = new ArrayList<>(); fruits.add("Banana"); fruits.add("Apple"); fruits.add("Cherry"); System.out.println("Before sorting: " + fruits); Collections.sort(fruits); // 自然顺序排序 System.out.println("After sorting: " + fruits); } } ``` 上述代码展示了字符串列表按字母表顺序排序的过程[^2]。 #### 实现 `Comparator` 接口来自定义排序逻辑 当需要更复杂的排序规则时,可以创建并传入一个 `Comparator` 的实例给 `sort` 函数作为参数。这允许开发者指定任意数量的同条件用于控制元素之间的相对位置。 ```java import java.util.*; class Person implements Comparable<Person> { private String name; private int age; public Person(String n, int a){ this.name=n; this.age=a; } @Override public int compareTo(Person otherPerson){ return Integer.compare(this.age,otherPerson.getAge()); } // Getters and toString method omitted for brevity. } // Custom comparator to sort by name first then age if names are equal class NameThenAgeComparator implements Comparator<Person>{ @Override public int compare(Person p1, Person p2){ int result=p1.getName().compareTo(p2.getName()); if(result==0){return Integer.compare(p1.getAge(),p2.getAge());} else{return result;} } } public class Main{ public static void main (String []args){ List<Person> people=new ArrayList<>(Arrays.asList( new Person("Alice",30), new Person("Bob",25), new Person("Charlie",35) )); Collections.sort(people,new NameThenAgeComparator()); for(var person : people){ System.out.println(person); } } } ``` 这段程序先按照名字再按年龄对人员记录进行了排序[^3]。 #### 利用 Lambda 表达式简化语法 自从引入了Lambda表达式之后,在Java8及以上版本中编写比较器变得更加简洁明了: ```java List<Person> persons = Arrays.asList(new Person("John", 29),new Person("Jane", 35)); persons.sort((o1,o2)->Integer.compare(o1.getAge(), o2.getAge())); // 或者更加紧凑的方式 persons.sort(Comparator.comparingInt(Person::getAge)); for (var person : persons) { System.out.println(person); } ``` 这种方法仅提高了可读性还减少了样板代码的数量[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值