如何将重复数组作为集合进行比较?

use*_*879 3 java arrays equals set

我有两个可能有重复的数组.我需要将它们作为集合进行比较.

例如{1, 4, 9, 16, 9, 7, 4, 9, 11}相当于{11, 11, 7, 9, 16, 4, 1}.我已经尝试了很多方法,但我一直得到错误或错误的答案.这是我现在的代码:

import java.util.Scanner;
public class sameElement{
  public static void main(String[] args){
        int[] value1 = {11, 7, 9, 16, 4, 1};
        int[] value2 = {11, 11, 7, 9, 16, 4, 1};
   sort(value1);
   sort(value2);
   System.out.println(sameSet(value1, value2));

   }
public static boolean sameSet(int[] a, int[] b){
int j = 0;
int counter2 = 0;
for(int i = 0; i < b.length; i++){
  if(a[j] == b[i]){j++;}
  else{counter2++;};}

   }
public static int[] sort (int[] a){
  for (int i = 0; i < a.length; i++) {
    for (int i2 = i + 1; i2 < a.length; i2++){
        if (a[i] > a[i2]){
          int temp = a[i2];
          a[i2] = a[i];
          a[i] = temp;}
         }
     }
return a;
 }
}
Run Code Online (Sandbox Code Playgroud)

Ada*_*dam 5

TreeSet是一个有序的集合,因此它将免费进行排序和重复删除.因此,您所要做的就是将数组加载到其中,然后使用.equals().

Integer[] value1 = { 11, 7, 9, 16, 4, 1 };
Integer[] value2 = { 11, 11, 7, 9, 16, 4, 1 };

Set<Integer> tSet1 = new TreeSet<Integer>(Arrays.asList(value1));
Set<Integer> tSet2 = new TreeSet<Integer>(Arrays.asList(value2));

System.out.println(tSet1);
System.out.println(tSet2);

System.out.println(tSet1.equals(tSet2));
Run Code Online (Sandbox Code Playgroud)

产量

[1, 4, 7, 9, 11, 16]
[1, 4, 7, 9, 11, 16]
true
Run Code Online (Sandbox Code Playgroud)