J'ai des tableaux de chaînes de tableaux.Comment optimiser la recherche sur array of String array?
List<String[]> mainList = new ArrayList<String[]>();
String[] row1 = {"foo", "bar", "moo"}
String[] row2 = {"cocoa", "zoo", "milk", "coffee"}
mainList.add(row1);
mainList.add(row2);
Disons que je veux trouver un élément « lait ».
Je pourrais faire avec 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
}
}
}
J'ai essayé de le rendre plus rapide en mettant tous les éléments comme touche de carte.
//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; }
Mais je compris cela est encore N^2 (c.-à boucle à l'intérieur de la boucle, lorsque le nombre de rangées ajouté à mainlist comme row3 [ « item1 », « item2 », « item3 »], le incréments d'itération dans N^2)
comment puis-je optimiser ceci sans N^2?
'Carte m = new HashMap();' Ceci ne sera pas compilé car une carte a deux paramètres de type. Aussi, qu'est-ce qui te fait penser que ce sera O (n^2)? –
oups, je vais le réparer maintenant, merci d'avoir signalé –