S
Silvia
Gast
Ich brauche ein Map, wo ich Dupplikaten einfügen will.
(String, Integer)
Hat jemand einen Vorschlag?
(String, Integer)
Hat jemand einen Vorschlag?
Map<List> m = new HashMap<List>(),
int aa = 0;
int ba = 1;
int ca = 2;
int ac = 3;
int bb = 4;
List<Integer> aList = new ArrayList<Integer>();
aList.add(new Integer(aa));
aList.add(new Integer(ac));
m.put("a", aList);
List<Integer> list = m.get("a");
list.add(new Integer(ab));
m.put("a", list);
// Oder ganz kurz
m.put("a", m.get("a").add(new Integer(ab)));
private Map<String, List<Integer>> map = new HashMap<String, List<Integer>>();
private void doPut(String s, Integer i)
{
List<Integer> list = map.get(s);
if (list == null)
{
list = new ArrayList<Integer>();
map.put(s, list);
}
list.add(i);
}
...
doPut("Hallo", 1);
doPut("Hallo", 2);
doPut("Hallo", 3);
List<Integer> list = map.get("Hallo");
int sum = 0;
for (int i : list) sum += i;
System.out.println(sum); // Gibt 6 aus
public class MyMultiValueMap<K, V> {
private Map<K, List<V>> _data;
public MyMultiValueMap() {
_data = new HashMap<K, List<V>>();
}
public void put(final K key, final V value) {
put(key, value, true);
}
public void put(final K key, final V value, final boolean bAppend) {
List<V> list;
if (bAppend && _data.containsKey(key)) {
list = _data.get(key);
list.add(value);
_data.put(key, list);
} else {
list = new ArrayList<V>();
list.add(value);
_data.put(key, list);
}
}
public List<V> getValues(final K key) {
return _data.get(key);
}
public boolean containsKey(final K key) {
return _data.containsKey(key);
}
public List<K> containsValue(final V value) {
// Wenn _data null oder leer ist wird direkt null zurück gegeben
if (_data == null || _data.isEmpty()) {
return null;
}
List<K> retList = null;
Iterator<K> it = _data.keySet().iterator();
K key;
while(it.hasNext()) {
key = it.next();
if (_data.get(key).contains(value)) {
if (retList == null) {
retList = new ArrayList<K>();
}
retList.add(key);
}
}
return retList;
}
public void clear() {
_data.clear();
}
public List<K> getKeys() {
// Wenn _data null oder leer ist wird direkt null zurück gegeben
if (_data == null || _data.isEmpty()) {
return null;
}
List<K> retList = new ArrayList<K>();
Iterator<K> it = _data.keySet().iterator();
while (it.hasNext()) {
retList.add(it.next());
}
return retList;
}
}
Titel | Forum | Antworten | Datum | |
---|---|---|---|---|
T | ArrayList (Zahlen) aufsteigend sortieren mit Duplikaten | Java Basics - Anfänger-Themen | 8 |