java去除兩個陣列中相同的元素
阿新 • • 發佈:2018-11-07
import java.util.*; /** * 陣列去重 * <p> * Created by Cheung on 2016/4/14. */ public class Test01 { public static void main(String[] args) { String[] srcArr = {"a", "b", "c", "c", "d", "e", "e", "e", "a"}; String[] destArr01 = deDuplication01(srcArr); System.out.println(Arrays.toString(destArr01)); String[] destArr02 = deDuplication02(srcArr); System.out.println(Arrays.toString(destArr02)); String[] destArr03 = deDuplication03(srcArr); System.out.println(Arrays.toString(destArr03)); String[] destArr04 = deDuplication04(srcArr); System.out.println(Arrays.toString(destArr04)); String[] destArr05 = deDuplication05(srcArr); System.out.println(Arrays.toString(destArr05)); } /** * 陣列去重 法一 * <p> * 先遍歷原陣列,然後遍歷結束集,通過每個陣列的元素和結果集中的元素進行比對,若相同則break。若不相同,則存入結果集。兩層迴圈進行遍歷得出最終結果。 * * @param srcArr 原陣列 * @return 目標陣列 */ private static String[] deDuplication01(String[] srcArr) { List<String> list = new ArrayList<>(); boolean flag; for (int i = 0; i < srcArr.length; i++) {// 遍歷原陣列 flag = false; for (int j = 0; j < list.size(); j++) {// 遍歷結果集 if (srcArr[i].equals(list.get(j))) { flag = true; break;// 重複元素,break } } if (!flag) { list.add(srcArr[i]);// 不重複的元素存入結果集 } } return (String[]) list.toArray(new String[list.size()]); } /** * 陣列去重 法二 * <p> * int indexOf(String str)返回指定子字串在此字串中第一次出現處的索引。 * * @param srcArr 原陣列 * @return 目標陣列 */ private static String[] deDuplication02(String[] srcArr) { List<String> list = new ArrayList<>(); list.add(srcArr[0]); for (int i = 1; i < srcArr.length; i++) { if (list.toString().indexOf(srcArr[i]) == -1) { list.add(srcArr[i]); } } return (String[]) list.toArray(new String[list.size()]); } /** * 陣列去重 法三 * <p> * 巢狀迴圈 * * @param srcArr 原陣列 * @return 目標陣列 */ private static String[] deDuplication03(String[] srcArr) { List<String> list = new ArrayList<>(); for (int i = 0; i < srcArr.length; i++) { for (int j = i + 1; j < srcArr.length; j++) { if (srcArr[i] == srcArr[j]) { j = ++i; } } list.add(srcArr[i]); } return (String[]) list.toArray(new String[list.size()]); } /** * 陣列去重 法四 * <p> * 先使用java提供的陣列排序方法進行排序,然後進行一層for迴圈,進行相鄰資料的比較即可獲得最終結果集。 * * @param srcArr 原陣列 * @return 目標陣列 */ private static String[] deDuplication04(String[] srcArr) { Arrays.sort(srcArr); List<String> list = new ArrayList<>(); list.add(srcArr[0]); for (int i = 1; i < srcArr.length; i++) { if (!srcArr[i].equals(list.get(list.size() - 1))) { list.add(srcArr[i]); } } return (String[]) list.toArray(new String[list.size()]); } /** * 陣列去重 法五 * <p> * 先使用java提供的陣列排序方法進行排序,然後進行一層for迴圈,進行相鄰資料的比較即可獲得最終結果集。 * * @param srcArr 原陣列 * @return 目標陣列 */ private static String[] deDuplication05(String[] srcArr) { Set<String> set = new HashSet<>(); for (int i = 0; i < srcArr.length; i++) { set.add(srcArr[i]); } return (String[]) set.toArray(new String[set.size()]); } }