繁体   English   中英

在Java中使用Lambda排序字符列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM