22 package org.matsim.utils.objectattributes.attributable;
41 private static final String[]
EMPTY_KEYS =
new String[0];
49 StringBuilder stb =
new StringBuilder() ;
50 for (
int i=0; i < keys.length; i++ ) {
51 String subkey = keys[ i ];
52 stb.append(
"{ key=").append(subkey);
53 stb.append(
"; object=").append( values[ i ].
toString());
56 return stb.toString() ;
59 public Object
putAttribute(
final String attribute,
final Object value) {
60 final int insertion = Arrays.binarySearch( keys , attribute );
62 if ( insertion >= 0 ) {
63 final Object prev = values[ insertion ];
64 values[ insertion ] = value;
68 final int newIndex = -insertion - 1;
70 keys = Arrays.copyOf( keys , keys.length + 1 );
71 values = Arrays.copyOf( values , values.length + 1 );
73 for (
int i=keys.length - 2; i >= newIndex; i-- ) {
74 keys[ i + 1 ] = keys[ i ];
75 values[ i + 1 ] = values[ i ];
78 keys[newIndex] = attribute;
79 values[newIndex] = value;
85 final int insertion = Arrays.binarySearch( keys , attribute );
87 if ( insertion < 0 )
return null;
89 return values[ insertion ];
93 final int insertion = Arrays.binarySearch( keys , attribute );
95 if ( insertion < 0 )
return null;
97 final Object prev = values[ insertion ];
99 for (
int i=insertion; i < keys.length - 1; i++ ) {
100 keys[ i ] = keys[ i + 1 ];
101 values[ i ] = values[ i + 1 ];
104 keys = Arrays.copyOf( keys , keys.length - 1 );
105 values = Arrays.copyOf( values , values.length - 1 );
124 return new AbstractMap<String, Object>() {
126 public Set<Entry<String, Object>> entrySet() {
127 return new AbstractSet<Entry<String, Object>>() {
129 public Iterator<Entry<String, Object>> iterator() {
150 private class EntryIterator implements Iterator<Map.Entry<String, Object>> {
155 return index < keys.length;
159 public Map.Entry<String, Object>
next() {
160 if (index >= keys.length) {
161 throw new NoSuchElementException();
163 Map.Entry<String, Object> entry =
new AbstractMap.SimpleEntry<>(keys[
index], values[
index]) ;
Map< String, Object > getAsMap()
Object putAttribute(final String attribute, final Object value)
Map.Entry< String, Object > next()
Object removeAttribute(final String attribute)
static final Object [] EMPTY_VALUES
static final String [] EMPTY_KEYS
Object getAttribute(final String attribute)