兩個字符串數組A和B,尋找相同元素的方法


問題:兩個字符串數組A和B,尋找相同元素的方法 ?注意:A、B數組都比較大

第一種::比較A、B找出B與A中不相同的元素,然后再用B減去B與A中不相同的元素即可。

    得到的就是A、B中相同的元素。

第二種:利用Map集合的性質,把數組A的數據作為map的key和value, 然后用B的數據取值,不為NULL,說明相同。

下面直接上代碼

    /**
     * 基本思路:相同 = 集合B-(集合B-集合A中相同的=不相同的)
     * 
     * @return
     */
    public List<String> getSameList(String[] strArr1, String[] strArr2) {
        // 數組A
        List<String> coll = Arrays.asList(strArr1);
        // 數組B
        List<String> coll2 = Arrays.asList(strArr2);

        // 數組B的list
        List<String> alter0 = new ArrayList<String>(coll2);

        // 數組A的List
        List<String> alter1 = new ArrayList<String>(coll);

        // 數組B與A不同的元素的List
        List<String> alter2 = new ArrayList<String>(coll2);
        // B中去掉A中相同的元素
        alter2.removeAll(alter1);

        // 數組BList -B中和A不用的List=相同的
        alter0.removeAll(alter2);
        Iterator<String> it2 = alter0.iterator();
        while (it2.hasNext()) {
            System.out.println("數組AB中相同的元素" + it2.next());
        }
        return alter0;
    }

    /**
     * 把數組A的數據作為map的key和value, 然后用B的數據取值,不為NULL,說明相同
     * 
     * Map接口 Map提供了一種映射關系,其中的元素是以鍵值對(key-value)的形式存儲的,能夠實現根據key快速查找value;
     * Map中的鍵值對以Entry類型的對象實例形式存在;
     * 建(key值)不可重復,value值可以重復,一個value值可以和很多key值形成對應關系,每個建最多只能映射到一個值。
     * Map支持泛型,形式如:Map<K,V> Map中使用put(K key,V value)方法添加
     * 
     * HashMap類 HashMap是Map的一個重要實現類,也是最常用的,基於哈希表實現 HashMap中的Entry對象是無序排列的
     * Key值和value值都可以為null,但是一個HashMap只能有一個key值為null的映射(key值不可重復)
     * 
     */
    public List<String> getSameElementByMap(String[] strArr1, String[] strArr2) {

        // HashMap key值 不可重復 Key值和value值都可以為null
        HashMap<String, Object> map = new HashMap<String, Object>();

        // 數組A中的元素放入Map中
        for (String string1 : strArr1) {
            map.put(string1, string1);
        }

        List<String> list = new ArrayList<String>();
        // 用數組B元素做為Key來取值,如為NULL則說明相同
        for (String string2 : strArr2) {
            Object j = map.get(string2);
            if (j != null) {
                list.add(string2);
                // System.out.println("數組AB中相同的元素: "+j.toString());
            }
        }
        return list;

    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM