TreeMap в Jаva

17 отговора 0 прегледа
#1

TreeMap в Jаva

Имате клас MyKey, който представлява custom key за TreeMap в Java.
Два ключа са еднакви ако имат еднакви стоиности на променливите foo,bar, foobar. По четвъртата променлива (реално число) се определя позицията им в мапа - колкото по-голяма толкова по-нагоре.
Бележка: hashCode() и equals() не се предефинират за TreeMap (тва да си призная не го знаех, но сложих един принт в тях и не се викаха, гоогле потвърди).
Вижте тестовия код и резултата по-долу, ако някой ми каже защо резултата е такъв ще му дам 1 бира.

class MyKey implements Comparable<MyKey>, Serializable {

private String foo;
private String bar;
private String foobar;
private double barfoo;

@Override
public int compareTo(MyKey o) {
if (this.foo.equals(o.getFoo()) &&
this.bar.equals(o.getBar()) &&
this.foobar.equals(o.getFoobar())) {
return 0;
}

if (this.barfoo >= o.getBarfoo()) {
return 1;
} else {
return -1;
}

}

// geters and setters
}


TreeMap<МъKey, DummyObject> hash = new TreeMap<MyKey, DummyObject>();
MyKey key = new MyKey();
key.setFoo("foo");
key.setBar("bar");
key.setFoobar("foobar");
key.setBarfoo(0);
hash.put(key, new DummyObject());

MyKey key1 = new MyKey();
key1.setFoo("foo");
key1.setBar("bar1");
key1.setFoobar("foobar");
key1.setBarfoo(0);
hash.put(key1, new DummyObject());

MyKey key2 = new MyKey();
key2.setFoo("foo");
key2.setBar("bar2");
key2.setFoobar("foobar");
key2.setBarfoo(0);
hash.put(key2, new DummyObject());

for (MyKey k : hash.keySet()) {
DummyObject d = hash.get(k);
System.out.println(d == null);
}

// rezult
true
false
false

Редактирано от moreol на

Отговор
в отговор на moreol #2

Re: TreeMap в Jаva

Според мене Кампарито е абсолютна боза.

Отговор
в отговор на SOVlET SMARTASS #3

Re: TreeMap в Jаva

Верно ли? Ако имаш нещо да казваш казвай, не сери без тоалетна хартия

Относно логиката, казах че 2 обекта са еднакви когато стоиностите на техните foo, bar, foobar са равни и са различни ако някои от стоиностите им не съвпадат.

Отговор
в отговор на SOVlET SMARTASS #5

Re: TreeMap в Jаva

Май си прав. В теста barfoo навсякъде е 0.0, пробвах го с различни числа и работи. Но това не ми помага да си реша проблема.

Отговор
в отговор на moreol #6

Re: TreeMap в Jаva

Пусни конкурс за обществена поръчка.

Отговор
в отговор на moreol #7

Re: TreeMap в Jаva

Кофти ти е метода за сравнение.
Когато добавяш третия път, трии мапа те пита един път:
бар2 и бар как са : метода вика бар2 е по-голямо
после, пак те пита:
бар и бар2 как са : метода вика бар е по-голямо

Е, ти го правих хахав тоз трии мап, к'во искаш после от него :)

Пробвах го и на ИБМ-ска жава, и там се оака ...

Отговор
в отговор на moreol #8

Re: TreeMap в Jаva

ако не е тайна що не трасираш сорса на Jаva да видиш кво става?
нали голяма част от сорса на Jаva го има, на TreeMap няма ли го?

no pain, no gain
Отговор
в отговор на BullDog #9

Re: TreeMap в Jаva

Тоя проблем го има на всички езици - .НЕТ, Ц++, всеки ТрееМап иска СВО, иначе то ще стане някаква лудница да валидираш при всяко внасяне.

Отговор
в отговор на SOVlET SMARTASS #10

Re: TreeMap в Jаva

То тва ясно, отделно, че в случая е дори по зле:
а < б, но и б < а

Въпросът е, защо му стана толкова "лошо" на мапа, че си загуби първия дъми обект? Кии има, обект няма !?!

Отговор
в отговор на BullDog #11

Re: TreeMap в Jаva

В Ц++ направо крашва, няма какво да се оплакваш. Абсолютно нормално е да върне нил. Вкарваш един елемент в грешния клон, после при търсенето завива на другата(правилната) страна и няма никой. И ключа и стойноста са там, само че ключа идва от итерация а стойноста от двойчното търсене, което е развалено.

Отговор
в отговор на wiz #12

Re: TreeMap в Jаva

Виц, бтв току що ми просветна..... превключвайки по каналите попаднах на проф. Вучков....... знаех си, че демагогията ти ми напомня на някой !!!


Отговор
в отговор на BullDog #13

Re: TreeMap в Jаva

Undefined behaviour, unless you follow certain rules? Надеждата, че протокол може да се енфорсне със статик типове е много забавна иначе :) Не, че не опитват даже сериозни хора

Simplicity is the essence of happiness. -- Cedric Bledsoe
Отговор
в отговор на 435 #14

Re: TreeMap в Jаva

Не бе, той е архитект - предлага ти решение, опраай се

Отговор
в отговор на Cин Mapмoт #15

Re: TreeMap в Jаva

неее, аз принципно говорех, не за този конкретен пост :)

Отговор
в отговор на 435 #16

Re: TreeMap в Jаva

пак си затънал в илюзии

аз съм обикновен зрител дето пише между другото общи приказки във форум за общи приказки,
нито водя предаване по тв нито се правя на професор, ти си по близо до проф. Вучков щото се правиш на голяма работа.

по едно време ми предлагаше съмнителни инвестиции, след тва лаеше като бясно куче, сега се хилиш като луд ... мяташ се като риба на сухо -> очевидно няма начин да ме разбереш за това зарежи опитите преди да изпушиш напълно, насочи си усилията към някоя лесна жертва като гуро на която може да промиваш мозъка без проблем

no pain, no gain
Отговор
в отговор на wiz #17

Re: TreeMap в Jаva

xaxaxaxaxa
предлагам съмнителни инвестиции ? ХАХАХАХАХА ох пич, ще ме умориш просто

Отговор
в отговор на wiz #18

Re: TreeMap в Jаva

бтв вече ми е смешно, защото разбрах, че в теб се е вселил духа на Професора, някак как да приема на сериозно дори и 1 твоя дума вече

Отговор