/* Copyright (c) 2006, Sriram Srinivasan
*
* You may distribute this software under the terms of the license
* specified in the file "License"
*/
package kilim.http;
/**
* A low overhead map to avoid creating too many objects (Entry objects and iterators etc)
*/
public class KeyValues {
public String[] keys;
public String[] values;
public int count;
public KeyValues() {this(5);}
public KeyValues(int size) {
keys = new String[size];
values = new String[size];
}
/**
* @param key
* @return value for the given key.
*/
public String get(String key) {
int i = indexOf(key);
return i == -1 ? "" : values[i];
}
public int indexOf(String key) {
int len = count;
for (int i = 0; i < len; i++) {
if (keys[i].equals(key)) {
return i;
}
}
return -1;
}
/**
* add/replace key value pair.
* @param key
* @param value
* @return old value
*/
public void put(String key, String value) {
int i = indexOf(key);
if (i == -1) {
if (count == keys.length) {
keys = (String[]) Utils.growArray(keys, count * 2);
values = (String[]) Utils.growArray(values, count * 2);
}
keys[count] = key;
values[count] = value;
count++;
} else {
values[i] = value;
}
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append('[');
for (int i = 0; i < count; i++) {
if (i != 0) sb.append(", ");
sb.append(keys[i]).append(':').append(values[i]);
}
sb.append(']');
return sb.toString();
}
}