mirror of
https://github.com/mitb-archive/filebot
synced 2024-08-13 17:03:45 -04:00
80 lines
1.6 KiB
Java
80 lines
1.6 KiB
Java
package net.filebot.util;
|
|
|
|
import static java.util.Collections.*;
|
|
|
|
import java.util.AbstractMap;
|
|
import java.util.AbstractSet;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
|
|
public class EntryList<K, V> extends AbstractMap<K, V> {
|
|
|
|
private List<? extends K> keys;
|
|
private List<? extends V> values;
|
|
|
|
public EntryList(List<? extends K> keys, List<? extends V> values) {
|
|
this.keys = keys != null ? keys : emptyList();
|
|
this.values = values != null ? values : emptyList();
|
|
}
|
|
|
|
@Override
|
|
public Set<Entry<K, V>> entrySet() {
|
|
return new AbstractSet<Entry<K, V>>() {
|
|
|
|
@Override
|
|
public Iterator<Entry<K, V>> iterator() {
|
|
return new Iterator<Entry<K, V>>() {
|
|
|
|
private Iterator<? extends K> keySeq = keys.iterator();
|
|
private Iterator<? extends V> valueSeq = values.iterator();
|
|
|
|
@Override
|
|
public boolean hasNext() {
|
|
return keySeq.hasNext() || valueSeq.hasNext();
|
|
}
|
|
|
|
@Override
|
|
public Entry<K, V> next() {
|
|
K key = keySeq.hasNext() ? keySeq.next() : null;
|
|
V value = valueSeq.hasNext() ? valueSeq.next() : null;
|
|
return new SimpleImmutableEntry<K, V>(key, value);
|
|
}
|
|
};
|
|
}
|
|
|
|
@Override
|
|
public int size() {
|
|
return keys.size();
|
|
}
|
|
};
|
|
}
|
|
|
|
@Override
|
|
public Set<K> keySet() {
|
|
return new AbstractSet<K>() {
|
|
|
|
@Override
|
|
public Iterator<K> iterator() {
|
|
return (Iterator<K>) keys.iterator();
|
|
}
|
|
|
|
@Override
|
|
public int size() {
|
|
return keys.size();
|
|
}
|
|
};
|
|
}
|
|
|
|
@Override
|
|
public List<V> values() {
|
|
return (List<V>) values;
|
|
}
|
|
|
|
@Override
|
|
public int size() {
|
|
return Math.max(keys.size(), values.size());
|
|
}
|
|
|
|
}
|