簡體   English   中英

找到數組的不匹配元素

[英]Find mismatch elements of arrays

我有一個任務:找到兩個數組不匹配的元素並將它們移動到第三個數組。 我理解如何找到匹配的元素,但如何找到不匹配的元素? 這是我匹配元素的代碼:

String[] = first_arr = {"Den", "Michel", "Dana", "Sophie" "Clar" }; 
String[] = sec_arr = {"Michel", "Sophie", "Clar" };
String[] = res_arr = new String[first_arr.-length];

Int count = 0;

For(int i=0; i<first_arr.length; i++) {
  for(int j=0; i<sec_arr.length; i++){
       if(first_arr[i].equals(sec_arr[i])) {
             res_arr[count++] = first_arr[i];
       }
   } 
} 

我假設你想在2個不同的數組中找到獨特的元素。 您可以使用集合方法來查找唯一元素

List<String> list1 = Arrays.asList("a","b","c","d");
List<String> list2 = Arrays.asList("a","c");
Set<String> both = new HashSet<String>(list1);
both.addAll(list2);
Set<String> common = new HashSet<String>(list1);
common.retainAll(list2);
both.removeAll(common);
for (String s : both) {
    System.out.println(s);
}

不使用任何類或外部方法,這將是一個有效的解決方案:

    String[] first_arr = {"Den", "Michel", "Dana", "Sophie", "Clar"};
    String[] sec_arr = {"Michel", "Sophie", "Clar"};
    String[] temp_arr = new String[first_arr.length + sec_arr.length];
    int count = 0;

    for (int i = 0; i < first_arr.length; i++) {
        boolean contains = false;

        for (int j = 0; j < sec_arr.length; j++) {
            if (first_arr[i].equals(sec_arr[j])) {
                contains = true;
                break;
            }
        }

        if (!contains) {
            temp_arr[count++] = first_arr[i];
        }
    }

    for (int i = 0; i < sec_arr.length; i++) {
        boolean contains = false;

        for (int j = 0; j < first_arr.length; j++) {
            if (sec_arr[i].equals(first_arr[j])) {
                contains = true;
                break;
            }
        }

        if (!contains) {
            temp_arr[count++] = sec_arr[i];
        }
    }

    String[] res_arr = new String[count];
    for (int i = 0; i < count; i++) {
        res_arr[i] = temp_arr[i];
    }

但shashank提到的收集方法可能是最佳選擇。

編輯只是做了一些快速測試和(總是同名,5和4名),它說沒有使用類和其他方法平均快20倍(100次迭代)。 不是很可靠的測試,但我很好奇有多大差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM