簡體   English   中英

在ArrayLists的ArrayList中查找唯一的Arraylist

[英]Find unique Arraylist in an ArrayList of ArrayLists

據我了解,ArrayList類繼承其父“ List”類的equals()函數來查找兩個成員對象是否相同。 這是否意味着對ArrayList中的重復項進行“ contains()”線性搜索(使用“ equal”)? 那么“包含”的復雜度是O(n)嗎?

如果我使用Arraylist的ArrayList,那么包含函數的復雜度將為O(n * m)? 如果是,那么是否有任何包含函數的替換,該函數可以獲取成員ArrayList的一些哈希(基於內容)並確認兩個ArrayList對象相等?

編輯:我只是想在ArrayList的ArrayList中查找唯一元素的數量。 像{{0,0,3},{1,2,3},{0,0,3}}應該給出{{0,0,3},{1,2,3}}。

如果已經有了ArrayList<ArrayList<Integer>> ,則可以將其傳遞給HashSet<ArrayList<Integer>>的構造函數,並具有一組唯一的ArrayLists

List<ArrayList<Integer>> mylist_list = new ArrayList<ArrayList<Integer>>(); 
ArrayList<Integer> mylist = new ArrayList<Integer>();
...
for(ArrayList<Integer> list : mylist_list)
{
    System.out.println(Arrays.toString(list.toArray()));
}
Set<ArrayList<Integer>> mylist_set = new HashSet<ArrayList<Integer>>(mylist_list);

for(ArrayList<Integer> list : mylist_set)
{
    System.out.println(Arrays.toString(list.toArray()));            
}

的產量

[0, 1, 2]
[0, 1, 2]
[0, 1, 2]

將重復項傳遞到ArrayList<ArrayList<Integer>>

復雜度為O(N)。 接下來的實現:

 public int indexOf(Object o) {
    if (o == null) {
        for (int i = 0; i < size; i++)
            if (elementData[i]==null)
                return i;
    } else {
        for (int i = 0; i < size; i++)
            if (o.equals(elementData[i]))
                return i;
    }
    return -1;
}

是的, contains調用indexOf方法。

暫無
暫無

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

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