Map nach Werten durchsuchen

Fohnbit

Top Contributor
Hallo!

Gibt es einen schnelleren Weg eine Map (oder ähnliches) nach Werten zu durchsuchen und alle Einträge in der Map zu behandeln, die diesen entsprechen?

Ich habe eine Map mit ID und einem Wert (map.put(id,value)).
Da habe ich um die 100 Einträge.

Nun muss ich alle Werte mit "3400" lesen, danach aus der Map löschen und danach bearbeiten.

Aktuell würde ich das so machen:
Java:
				if (map.containsValue(value)) {
					for (int i = 0; i < map.size(); i++) {

					}
				}

Zuerst prüfen ob überhaupt ein Wert drinnen ist und dann alle Einträge durchlaufen.

Schön wäre es wenn ich nur die Daten bekommen könnte, die den Value entsprechen.

LG
 
Versuch mal die Methode get(Object).
Bei sowas hilft es, in die API zu gucken anstatt sofort zu fragen. Das führt schneller zu einer Lösung. 😉
 
Ahh ich würd dir hier einen Iterator empfehlen:

Java:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class Test {
  public static void main(String... args) {
    Map<Integer, String> map = new HashMap<Integer, String>();
    for (int i = 0; i < 20; i++) {
      map.put(i, String.valueOf(i % 6));
    }
    
    System.out.println(map);
    
    processAndRemoveMap(map, "5");
    
    System.out.println(map);
  }
  
  public static <T, U> void processAndRemoveMap(Map<T, U> map, U value) {
    for (Iterator<Entry<T, U>> iter = map.entrySet().iterator(); iter.hasNext(); ) {
      Entry<T, U> entry = iter.next();
      if (value == null ? value == entry.getValue() : value.equals(entry.getValue())) {
        processValue(entry.getValue());
        iter.remove();
      }
    }
  }
  
  private static <T> void processValue(T removed) {
    System.out.println(removed);
  }
}
 
Zuletzt bearbeitet:

Zurück
Oben