从java中的数组中提取不同的值

Che*_*ewy 2 java arrays unique

有一个程序,用户将 10 个 int 值输入到数组中。最后,我需要提取不同的值并显示它们。添加了我的第二个 for 循环,它将确定该值是否不同(即,如果该数字出现多次,则仅显示一次)。

例如,假设我传入数字: 1, 2, 3, 2, 1, 6, 3, 4, 5, 2 不同的数组应该只包含数字 {1, 2, 3, 6, 4, 5}

import java.util.Scanner;
import java.io.*;

public class ArrayDistinct {
 public static void main(String[] args) throws IOException {

 Scanner input = new Scanner(System.in);

 // Create arrays & variables  
 int arrayLength = 10;
 int[] numbers = new int[arrayLength];
 int[] distinctArray = new int[arrayLength];
 int count = 0;

 System.out.println("Program starting...");
 System.out.print("Please enter in " + numbers.length + " numbers: ");

 for (int i = 0; i < numbers.length; i++) {
  numbers[i] = input.nextInt();
 }

 for (int i = 0; i < numbers.length; i++) {
  int temp = numbers[i];
  int tempTwo = numbers[i + 1];

  if (tempTwo == temp) {
   count++;
   distinctArray[i] = temp;
  }
 } 

 // Print out results

} // end main
} // end class
Run Code Online (Sandbox Code Playgroud)

Kic*_*ski 5

Java 8

流<T>distinct()

返回由该流的不同元素(根据 Object.equals(Object))组成的流。对于有序流,不同元素的选择是稳定的(对于重复元素,保留按遇到顺序首先出现的元素。)对于无序流,不提供稳定性保证。

代码:

   Integer[] array = new Integer[]{5, 10, 20, 58, 10};
   Stream.of(array)
         .distinct()
         .forEach(i -> System.out.print(" " + i));
Run Code Online (Sandbox Code Playgroud)

输出:

5,10,20,58
Run Code Online (Sandbox Code Playgroud)

阅读有关不同功能的更多信息