1. 程式人生 > >Java基礎之字串陣列Array進行去重

Java基礎之字串陣列Array進行去重

寫出一段演算法,用於對字串陣列進行去重,要求儘量簡潔

舉例:

* 輸入:
* {"cc","dd","aa","cc","gg","dd","ee"}
* 輸出:
* {"cc","dd","aa","gg","ee"}

ArrayList去重

通過list.contains()方法

    /**
     * 通過list.contains()方法
     *
     * @param arrays
     * @return
     */
    public static String[] dealContains(String[] arrays) {
        ArrayList arrayList = new ArrayList();
        for (int i = 0; i < arrays.length; i++) {
            String array = arrays[i];
            if (!arrayList.contains(array)) {
                arrayList.add(array);
            }
        }
        String[] b = (String[]) arrayList.toArray(new String[arrayList.size()]);
        return b;
    }

Set去重

TreeSet對字串陣列去重並排序

    /**
     * TreeSet對字串陣列去重並排序
     *
     * @param arrays
     * @return
     */
    public static String[] dealTreeSet(String[] arrays) {
        TreeSet<String> set = new TreeSet<String>();
        for (String s : arrays) {
            set.add(s);
        }

        return  set.toArray(new String[0]);
    }

HashSet根據元素的hashCode值來決定元素的儲存位置

    /**
     * HashSet根據元素的hashCode值來決定元素的儲存位置
     * 順序不能保證
     *
     * @param arrays
     * @return
     */
    private static String[] dealHashSet(String[] arrays) {
        HashSet<String> hashSet = new HashSet<String>();
        for (String s : arrays) {
            hashSet.add(s);
        }

        return hashSet.toArray(new String[0]);
    }

LinkedHashSet以元素的新增順序輸出

    /**
     * LinkedHashSet根據元素的hashCode值來決定元素的儲存位置
     * 以元素的新增順序訪問集合的元素
     *
     * @param arrays
     * @return
     */
    private static String[] dealLinkedHashSet(String[] arrays) {
        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<String>();
        for (String s : arrays) {
            linkedHashSet.add(s);
        }

        return linkedHashSet.toArray(new String[0]);
    }