[英]Sort list of objects using Collection.sort() with lambdas only
[英]sort a list of characters using lambdas in java
好的,这是家庭作业。 我尝试了几件事,但无法正常工作。 这些指令是-写一个程序,将30个随机字母插入到列表中。 执行以下操作并显示结果:a)以升序对列表进行排序。 b)按降序对列表进行排序。 c)以升序显示列表,删除重复项。 我已经完成了最简单的部分,但是当涉及到排序时,我不确定从哪里开始。 公共类RandomCharacters {
//私有静态列表randomCharacters;
public static void main(String[] args) {
//Create List of Char type
List<Character> randomCharacters = new ArrayList<>();
//Character[] randChars = new Character[30];
//generate random letters and add to the list
for(int i = 0; i<30; i++){
int num = (int) (26* Math.random());
//randChars[i] = (char) (num + 'a');
char letter = (char) (num + 'a');
randomCharacters.add(letter);
//System.out.println(letter);
}
//System.out.println( "Unsorted list= " + Arrays.asList(randChars));
System.out.println( "Unsorted list= " + randomCharacters);
System.out.println("Ascending sort: ");
Arrays .stream(randomCharacters)
.sorted()
.collect(Collectors.toList());
}
我尝试过两种方法。 一个使用字符数组,并使用tolist和仅使用ArrayList进行转换,但排序不起作用。 任何提示为什么这不起作用。
您可以调用Stream.sorted()
和Stream.sorted(Comparator<? super T>)
和Stream.distinct()
。 就像是,
System.out.println("Unsorted list= " + randomCharacters);
System.out.println("Sorted Ascending: ");
randomCharacters.stream().sorted().forEach(System.out::println);
System.out.println("Sorted Descending: ");
randomCharacters.stream().sorted(Comparator.reverseOrder())
.forEach(System.out::println);
System.out.println("Ascending unique sort: ");
randomCharacters.stream().sorted().distinct().forEach(System.out::println);
因为您在流上调用“ .collect”,但不要将其存储在任何地方。 然后打印未排序的列表(在打印后对列表进行排序)。 改为这样做
List<Character> sortedList = randomCharacters.stream()
.sorted()
.collect(Collectors.toList());
System.out.println("Ascending sort: " + sortedList);
好的,谢谢大家,我结合了两种使用方式,这是我完整的代码。 我认为它对我需要的东西有好处,但是如果有人认为它可以更有效,请让我知道公共类RandomCharacters {
private static List<Character> randomCharacters;
public static void main(String[] args) {
//Create List of Char type
List<Character> randomCharacters = new ArrayList<>();
//generate random letters and add to the list
for(int i = 0; i<30; i++){
int num = (int) (26* Math.random());
char letter = (char) (num + 'a');
randomCharacters.add(letter);
}
System.out.println( "Unsorted list= " + randomCharacters);
List<Character> sortedList = randomCharacters.stream()
.sorted()
.collect(Collectors.toList());
System.out.println("Ascending sort: " + sortedList);
List<Character> reversedList = randomCharacters.stream()
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());
System.out.println("Sorted Descending: " + reversedList);
List<Character> uniqueList = randomCharacters.stream()
.sorted()
.distinct()
.collect(Collectors.toList());
System.out.println("Unique Sort: "+ uniqueList);
}
}
我也会在上交之前添加更多评论
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.