我有數組的字符串數組。如何優化對字符串數組數組的搜索?
List<String[]> mainList = new ArrayList<String[]>();
String[] row1 = {"foo", "bar", "moo"}
String[] row2 = {"cocoa", "zoo", "milk", "coffee"}
mainList.add(row1);
mainList.add(row2);
比方說我想找到一個元素「牛奶」。
我可以用N^2做。
for(int i=0, j=mainList.size(); i<j; i++) {
for(int x=0, y=mainList.get(i).length(); x<y; x++) {
String item = mainList.get(i)[x];
if(item.equals("milk")) {
return true; //found milk
}
}
}
我試圖通過將所有元素設置爲Map鍵來使其更快。
//put all elements to map key
Map m = new HashMap<String, String>();
for(int i=0, j=mainList.size(); i<j; i++) {
for(int x=0, y=mainList.get(i).length(); x<y; x++) {
m.put(mainList.get(i)[x], "whatever");
}
}
//now iterate and see if key "milk" is found
if(m.contains("milk")) { return true; }
但是我想這仍然是N^2(即,對於環的for循環內,作爲添加的行的數量以mainList像ROW3 [ 'ITEM1', 'ITEM2', '項目3'],則迭代在N^2中遞增)
如何在沒有N^2的情況下優化這個?
'Map m = new HashMap();'這不會編譯爲Map有兩個類型參數。另外,是什麼讓你認爲這將是O(n^2)? –
2011-05-11 05:20:36
哎呀,我現在就修復它,謝謝指出 – 2011-05-11 05:21:05