【问题标题】:How to do the sorting for duplicate numbers in Java?如何在Java中对重复数字进行排序?
【发布时间】:2015-06-11 13:32:20
【问题描述】:

现在我想做排序部分... 什么是排序? 我对排序很困惑,我需要删除重复的数字...... 以及如何删除数字并对此编码进行排序? p/s:重复的数字我只得到了几个……

import java.lang.*; 
// import java.util.Random;

class UniqueRandomIntArray {

//   static Random rnGen = new Random();

   private static void uriArray(int[] rray) {
      int low = 0;
      int high = 100;

      int rn;
      int haveit = -1;
      int i = 0; 
      int j;

      while((haveit == -1) && i < rray.length) {  
         rn = randNum(low, high);

         for(j = 0; j <= i; j++) {
            if(rn == rray[j]) {
               haveit = j;
               j = i;
               }
            }

         if(haveit != -1) {
            System.out.println("a[" + haveit + "] is " + rn + " already");
            haveit = -1;
            }
         else {
            System.out.println("a[" + i + "] is " + rn);
            rray[i] = rn;
            i++;
            }

         }   // end while
      }      // end uriArray


   private static int randNum(int min, int max) {
      int range = (max - min) + 1;
//      int randnum = rnGen.nextInt(range) + min;
      int randnum = (int) (Math.random() * range) + min;
      return randnum;
      }


   public static void main(String[] args) {
      int[] arra = new int[20];
      uriArray(arra);
      for(int i=0; i<arra.length; i++)  {
         System.out.print(" | " + arra[i]);
         }
      System.out.println(" | ");
      }

   } //class ends

【问题讨论】:

标签: java sorting duplicate-removal


【解决方案1】:

这是生成唯一的随机整数列表的简单方法:

    new Random().ints(0, 101)// generate a stream of random integers from 0 (incl.) to 100
            .distinct() // unique                                   
            .limit(20) // we only need 20 random numbers
            .sorted() // sort
            .forEach(System.out::println);

因此,如果您希望获得与旧代码相同的结果,这是您的完整新代码:

class UniqueRandomIntArray {
public static void main(String[] args) {
    new Random().ints(0, 101).distinct() // generate a stream of random
            // integers
            .limit(20) // we only need 20 random numbers
            .sorted().forEach((int i) -> System.out.print(" | " + i));
    System.out.println(" | ");
}
} // class ends

【讨论】:

  • 所以这是新数组还是我必须把它放在代码中?
  • @Rex你需要这个数组吗?您可以更改上面的代码。而不是 .forEach(...) 你可以写 .boxed().collect(Collectors.toList());。这为您提供了一个整数列表。如果你真的需要它,你可以将它转换为一个数组
  • 可是不知道改哪里?
  • @RexYou 我已经更新了我的答案。询问您是否需要更多。
【解决方案2】:

用您当前的 main 方法替换下面的代码并运行程序。
对于升序结果,请使用此
Arrays.sort(结果);

对于降序结果,请同时使用
Arrays.sort(结果);
Arrays.sort(result, Collections.reverseOrder());

 public static void main(String[] args) {
      int[] arra = new int[20];
      uriArray(arra);

      Integer[] result = new Integer[arra.length];
        for (int i = 0; i < arra.length; i++) {
            result[i] = Integer.valueOf(arra[i]);
        }       
      Arrays.sort(result);          
      Arrays.sort(result, Collections.reverseOrder());  //comment this line if you want only ascending order results. if you want descending order result keep this line alive

      for(int i=0; i<result.length; i++)  {
         System.out.print(" | " + result[i]);
         }
      System.out.println(" | ");
      }

让我知道这是否适合你

包括这些包

导入 java.util.ArrayList;
导入 java.util.Arrays;
导入 java.util.Collections;
导入 java.util.List;

【讨论】:

  • 数组不起作用,你的建议是什么?Main.java:56: 错误:找不到符号 Arrays.sort(result); ^ 符号:变量数组位置:类 UniqueRandomIntArray Main.java:57:错误:找不到符号 Arrays.sort(result, Collections.reverseOrder()); ^ 符号:变量集合位置:类 UniqueRandomIntArray Main.java:57:错误:找不到符号 Arrays.sort(result, Collections.reverseOrder()); ^ 符号:变量数组位置:类 UniqueRandomIntArray
  • 您是否包含了这些软件包?导入 java.util.ArrayList;导入 java.util.Arrays;导入 java.util.Collections;导入 java.util.List;
  • 您使用哪个编辑器进行开发?...您是否使用任何 IDE 进行开发,例如 eclipse ?
  • 包括我提到的上述软件包并运行程序..它会工作..我也在我的答案中更新了它
  • 非常感谢......我想问你一些事情......上次我使用 Collections.shuffle 没有用只是因为我没有导入?
猜你喜欢
  • 2016-10-30
  • 2016-10-14
  • 2013-08-28
  • 2010-10-21
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 2019-01-14
相关资源
最近更新 更多