簡體   English   中英

合並兩個大字符串數組

[英]Merge two large string arrays

我需要將兩個大型字符串數組合並為一個,然后對它們進行整體排序。

截至我查看的方法如下:

  1. 循環播放

  2. 使用數組列表,例如

     List list = new ArrayList(Arrays.asList(a)); list.addAll(Arrays.asList(b)); 

是否有任何特定的方式來處理Android中的字符串,以使其比Java庫utils更有效?

誰能建議我這樣做的有效方式/替代方式。

注意:每個數組最多可包含8k個元素

最好在您的情況下使用數組。 同樣,它不會占用大量內存,因為您沒有處理字符串。

public <T> T[] merge(T[] a, T[] b) {
    int aLen = a.length;
    int bLen = b.length;

    T[] merged = (T[]) Array.newInstance(a.getClass().getComponentType(), aLen + bLen);
    System.arraycopy(a, 0, merged, 0, aLen);
    System.arraycopy(b, 0, merged, aLen, bLen);

    return merged;
}

然后,您需要對其進行排序:

String[] mergedArray = merge(a, b);
Arrays.sort(mergedArray);

在這種情況下,合並數組的復雜度將為O(n + m),而排序將為(n + m)* log(n + m)。

在列表方法中,如果ArrayList將擴展並從數組轉換為集合,您將有一些開銷。 O(n)用於Arrays.asList(a),O(n)用於將元素添加到列表。 然后,將Arrays.asList(b)的O(m)和用於將元素添加到列表的O(m)用作對象,然后將O(m)用於將列表擴展到需要的容量n + m。

暫無
暫無

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

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