package com.sxit.dreamiya.utils.pinyin;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.ListIterator;
import java.util.List;
/***
* ��ֵ����������Ĺ����� HashMap�������һ��ʵ��
*
* @param <K>
* @param <V>
*/
public class HashList<K, V> {
/**
* ��ֵ����
* */
private List<K> keyArr = new ArrayList<K>();
/**
* ��ֵ��ӳ��
*/
private HashMap<K, List<V>> map = new HashMap<K, List<V>>();
/**
* ��ֵ����
*/
private KeySort<K, V> keySort;
public HashList(KeySort<K, V> keySort) {
// TODO Auto-generated constructor stub
this.keySort = keySort;
}
/**
* ���valueֵ����key
* */
public K getKey(V v) {
return keySort.getKey(v);
}
/** ��ֵ������ */
public void sortKeyComparator(Comparator<K> comparator) {
Collections.sort(keyArr, comparator);
}
/** �������ؼ�ֵ */
public K getKeyIndex(int key) {
return keyArr.get(key);
}
/** �������ؼ�ֵ�� */
public List<V> getValueListIndex(int key) {
return map.get(getKeyIndex(key));
}
public V getValueIndex(int key, int value) {
return getValueListIndex(key).get(value);
}
public int size() {
return keyArr.size();
}
public void clear() {
for (Iterator<K> it = map.keySet().iterator(); it.hasNext(); map.remove(it.next()));
}
public boolean contains(Object object) {
// TODO Auto-generated method stub
return false;
}
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}
public Object remove(int location) {
// TODO Auto-generated method stub
return null;
}
public boolean remove(Object object) {
// TODO Auto-generated method stub
return false;
}
public boolean removeAll(Collection arg0) {
// TODO Auto-generated method stub
return false;
}
public boolean retainAll(Collection arg0) {
// TODO Auto-generated method stub
return false;
}
public Object set(int location, Object object) {
// TODO Auto-generated method stub
return keyArr.set(location, (K) object);
}
public List subList(int start, int end) {
// TODO Auto-generated method stub
return keyArr.subList(start, end);
}
public Object[] toArray() {
// TODO Auto-generated method stub
return keyArr.toArray();
}
public Object[] toArray(Object[] array) {
return keyArr.toArray(array);
}
public boolean add(Object object) {
V v = (V) object;
K key = getKey(v);
if (!map.containsKey(key)) {
List<V> list = new ArrayList<V>();
list.add(v);
keyArr.add(key);
map.put(key, list);
} else {
map.get(key).add(v);
}
return false;
}
public int indexOfKey(K k)
{
return keyArr.indexOf(k);
}
}