Я изучал скорость различных типов коллекций Java и наткнулся на нечто странное. Я добавляю 1 000 000 объектов из статического массива в другой тип коллекции и возвращаю требуемое время. Эта часть кода работает нормально.
При дальнейшем расследовании я заметил, что TreeSet
не получает все 1 000 000 объектов, а каждый раз получает разное количество. Ниже приведен метод переноса объектов из массива в TreeSet
:
public int treeSet(int num)
{
Date before = new Date();
for(int i=0; i<num; i++)
{
treeSet.add(personsArray[i]);
}
Date after = new Date();
return (int) (after.getTime() - before.getTime());
}
Ниже приведен код, который вызывает метод treeSet() и проверяет его размер.
System.out.println("\tTree set with 1,000,000 objects--" + t.treeSet(1000000));
System.out.println("Tree set contains " + t.treeSet.size() + " elements");
Результат этого:
Tree set with 1,000,000 objects--1192
Tree set contains 975741 elements
Я надеюсь, что кто-нибудь объяснит мне, почему TreeSet
не получает все объекты и почему он получает непостоянные суммы.
TreeSet
, равны?TreeSet
не допускает дубликатов. - person npinti   schedule 12.03.2015treeSet.add(personsArray[i]);
наif(!treeSet.add(personsArray[i])) { System.out.println("Collision Found"); }
. - person npinti   schedule 12.03.2015TreeSet
содержит ошибку. Так что, вероятно, есть ошибка в вашей программе или рассуждениях. Так что вам действительно следует опубликовать код классаPerson
. - person Raedwald   schedule 16.03.2015