0
RBTree http://en.wikipedia.org/wiki/Red%E2%80%93black_tree을 Java에서 제네릭으로 구현하려고합니다. 향후이 프로젝트의 일부로이 구조가 필요합니다.제네릭을 사용하여 RBTree를 구현하십시오.
public class RBTree<T extends Comparable<T>> { ... }
및 RBNode 클래스 :
public class RBNode<T extends Comparable<T>>{ ...
private T key;
...}
지금 여기에 문제가
나는 RBTree 클래스가 있습니다. ProductData 객체가있는 클래스 Product가 있습니다. 제품 만료일에 대한 정보를 보유하고 제품을 찾을 수 있어야하는 날짜까지 내 나무가 필요합니다.
ProductDate p = new ProductDate(new ProductData("Jahoda", "12345678", new Date(), new Date(), 555, 10));
ProductDate r = new ProductDate(new ProductData("Mandarinka", "987654321", new Date(), new Date(), 111, 12));
ProductDate d = new ProductDate(new ProductData("Malina", "987654321", new Date(), new Date(), 222, 13));
RBTree<Date> produkty = new RBTree<Date>();
produkty.insert(p.getKey());
produkty.insert(r.getKey());
produkty.insert(d.getKey());
을 그러나 여기에서 나는 주어진 제품에 대한 포인터를 잃은 것 :
지금과 같이 내 테스트 코드를 작성할 수 있습니다. 이것을 방지하는 방법?
github에 전체 코드를 제공 할 수 있습니다.
포인터로 무엇을 의미합니까? Java에는 포인터가 없습니다. 2. 왜 새로운 X (...) 대신 새로운 X (새로운 X (...))를 사용합니까? – kraskevich
잘 아니지만, 기본 포인터, 참조, 내 나쁜 죄송합니다 ... 나는 X (새로운 X (...))하지만 새로운 PDate (새로운 PData)를 사용하지 마십시오, 그 차이입니다. ProductDate는 ProductData 참조가있는 Product 클래스의 확장 클래스입니다. –
JDK의 TreeMap은 제네릭을 사용하는 Red Black 트리 구현입니다. – m3th0dman