Manchmal möchten Sie prüfen, ob sich ein Objekt in der Liste/Menge befindet und gleichzeitig die Liste/das Set geordnet werden soll. Wenn Sie Objekte auch ohne Verwendung einer Aufzählung oder eines Iterators abrufen möchten, sollten Sie sowohl ArrayList<String>
als auch HashMap<String, Integer>
verwenden. Die Liste wird von der Karte unterstützt.
Beispiel von einer Arbeit, die ich vor kurzem tat
public class NodeKey<K> implements Serializable, Cloneable{
private static final long serialVersionUID = -634779076519943311L;
private NodeKey<K> parent;
private List<K> children = new ArrayList<K>();
private Map<K, Integer> childrenToListMap = new HashMap<K, Integer>();
public NodeKey() {}
public NodeKey(Collection<? extends K> c){
List<K> childHierarchy = new ArrayList<K>(c);
K childLevel0 = childHierarchy.remove(0);
if(!childrenToListMap.containsKey(childLevel0)){
children.add(childLevel0);
childrenToListMap.put(childLevel0, children.size()-1);
}
...
In diesem Fall Parameter K
wäre ein String
für Sie sein. Die Karte (childrenToMapList
) speichert Strings
, die in die Liste (children
) als Schlüssel eingefügt wird, und die Kartenwerte sind die Indexposition in der Liste.
Der Grund für die Liste und die Karte ist, dass Sie indizierte Werte der Liste abrufen können, ohne eine Iteration über eine HashSet<String>
zu machen.
Eine gute Übung sowohl verschiedene Listen/Sätze sein würde, um zu versuchen/Karten und dann sehen, wenn Sie herausfinden können, warum Sie verschiedene Zeiten bekommen, indem Sie die Java-Dokumente für die Sammlungen lesen :) – willcodejavaforfood
Um sicher zu sein, dass Sie dieses Recht machen, lernen Sie, einen Profiler gut zu verwenden. Die niedrigste hängende Frucht ist die jvisvisualvm im JDK. –