Когда я проверить следующие тестовые случаи:Получение только `false` в качестве возвращаемого значения
public void put_remove2(IMiniMap<Integer,Double> map){
int [] ia = { 8, 6, 7, 5, 3, 0, 9,-86,-75,-30,-90};
double[] da = {.6,.07,.50,.33,.00,.90,.86,.75,.30,.90,.08};
for(int i=0; i<ia.length; i++){
assertEquals(null, map.put(ia[i], da[i]));
}
int expectSize = ia.length;
assertEquals(expectSize, map.size());
int [] remove = { 7, 1, 6, 4};
for(int rdx : remove){
assertEquals(true, map.contains(ia[rdx]));
assertEquals(new Double(da[rdx]), map.get(ia[rdx]));
assertEquals(new Double(da[rdx]), map.remove(ia[rdx]));
assertEquals(false, map.contains(ia[rdx]));
assertEquals(null, map.get(ia[rdx]));
expectSize--;
assertEquals(expectSize,map.size());
}
}
я получаю результат false
, но я должен получить true
и независимо от числа я кладу в ıA [..] I получите false
. Я думаю, что ошибка скрывается где-то в indexOf(K key)
или contains(K key)
.
Основной класс:
public class Tester {
public static void main(String[] args)
{
IMiniMap<Integer,Double> map = new FastGetListMM<Integer,Double>();
int [] ia = { 8, 6, 7, 5, 3, 0, 9,-86,-75,-30,-90};
boolean check = map.contains(ia[4]);
System.out.println(check);
}
}
Отдельный класс:
public class FastGetListMM<K,V> extends AbstractListMM<K,V>
{
public final Comparator<K> cmp;
public FastGetListMM()
{
super(new ArrayList<K>(), new ArrayList<V>());
cmp = null;
}
public FastGetListMM(Comparator<K> cmp)
{
this.cmp = cmp;
}
public boolean contains(K key)
{
int pos = this.indexOf(key);
if(pos < 0)
return false;
else
return true;
}
public void ensureComparable(K key)
{
if(!(key instanceof Comparable) && cmp == null)
throw new RuntimeException("The key is not instance of Comparable or comparator object is null");
}
public int indexOf(K key)
{
ensureComparable(key);
int foundIndex = Collections.binarySearch(keys, key, cmp);
return foundIndex;
}
}
В вашем примере ваша 'карта' пуста. –