[英]Merge two large string arrays
我需要將兩個大型字符串數組合並為一個,然后對它們進行整體排序。
截至我查看的方法如下:
循環播放
使用數組列表,例如
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.