在java中使用lambdas对字符列表进行排序

在java中使用lambdas对字符列表进行排序,java,java-stream,Java,Java Stream,好的,这是家庭作业。我试过几次,但都没能成功。指令是——编写一个插入30个随机字母的程序 进入一个列表。执行以下操作并显示结果: a) 按升序对列表排序。 b) 按降序排列列表。 c) 按升序显示列表,删除重复项。我已经完成了最简单的部分,但是当涉及到排序时,我不知道从哪里开始。 公共类随机字符{ private static List<Character> randomCharacters; public static void main(String[] args) {

好的,这是家庭作业。我试过几次,但都没能成功。指令是——编写一个插入30个随机字母的程序 进入一个列表。执行以下操作并显示结果: a) 按升序对列表排序。 b) 按降序排列列表。 c) 按升序显示列表,删除重复项。我已经完成了最简单的部分,但是当涉及到排序时,我不知道从哪里开始。 公共类随机字符{

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);
}
//私有静态列表随机字符

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());
}
publicstaticvoidmain(字符串[]args){
//创建字符类型的列表
List randomCharacters=新的ArrayList();
//字符[]randChars=新字符[30];
//生成随机字母并添加到列表中
对于(int i=0;i,因为您在流上调用“.collect”,但不将其存储在任何位置。并且您打印未排序的列表(打印后您正在对列表进行排序)。
改为这样做

List<Character> sortedList = randomCharacters.stream()
                                             .sorted()
                                             .collect(Collectors.toList());
System.out.println("Ascending sort: " + sortedList);
List sortedList=randomCharacters.stream()
.已排序()
.collect(Collectors.toList());
System.out.println(“升序排序:“+sortedList”);
因为您在流上调用了“.collect”,但不将其存储在任何地方。您可以打印未排序的列表(打印后您将对列表进行排序)。 改为这样做

List<Character> sortedList = randomCharacters.stream()
                                             .sorted()
                                             .collect(Collectors.toList());
System.out.println("Ascending sort: " + sortedList);
List sortedList=randomCharacters.stream()
.已排序()
.collect(Collectors.toList());
System.out.println(“升序排序:“+sortedList”);
你可以打电话和。比如

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);
你可以打个电话,比如

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);

好的,谢谢各位,我使用了你们两种溶液的组合,这是我的完整代码。我认为这对我所需要的很好,但如果有人认为它可以更有效,请告诉我 公共类随机字符{

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);
}
私有静态列表随机字符;
公共静态void main(字符串[]args){
//创建字符类型的列表
List randomCharacters=新的ArrayList();
//生成随机字母并添加到列表中

对于(int i=0;i好的,谢谢大家,我使用了你们两种解决方案的组合,这是我的完整代码。我认为这对我所需要的很好,但如果有人认为它可以更有效,请告诉我 公共类随机字符{

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);
}
私有静态列表随机字符;
公共静态void main(字符串[]args){
//创建字符类型的列表
List randomCharacters=新的ArrayList();
//生成随机字母并添加到列表中

for(inti=0;iperfect谢谢。现在我明白我的问题是什么了。我打了对方付费电话,但不是“保存”所以我需要创建一个分类列表,以便稍后调用。现在对于b部分,我将使用。相反,对于c部分,我将使用一个地图!谢谢!哦,我在分类之前打印了列表!太完美了,谢谢。现在我明白了我的问题所在。我调用的是收集,但不是“保存”所以我需要创建一个分类列表,以便稍后调用,其中包含集合。现在对于b部分,我将使用。相反,对于c部分,我将使用一个地图!谢谢!哦,我在分类之前打印了列表!这太愚蠢了。我像下面的另一个答案那样做,但我也看到了这个答案的工作原理。实际上,我感觉到了但是当它打印的时候,它会把每个字母打印在一个新行上,我认为它应该把它打印成一个列表(例如[a,b,c,d,等等]。也是这样,而不是做数组。stream我使用randomCharacter.stream。谢谢你的帮助,我很感激。我像下面的另一个答案那样做了,但我也看到了这个答案的工作原理。事实上,我觉得这个效果更好。不过,当它打印时,它只需将每个字母打印在一行新行上,我认为它应该将其作为列表打印(例如[a,b,c,d,等等]。同样,我使用randomCharacter.stream来代替array.stream。谢谢你的帮助,我很感激