2013-05-01 45 views
0

我有一個點的列表,我想使用包含方法。問題是我有下一個列表:{(1,2), (2,3), (2,4)},但當我問list.contain((2,3)),它給了我錯誤。我使用java.awt.PointJava /包含/相等點類

我該如何改變它來支持這個問題?

+1

你的意思是'list.contains(新點(2,3))'? – Reimeus 2013-05-01 13:07:21

+0

顯示顯示此問題的實際代碼,而不僅僅是說明。這應該工作,如果你正確實施它。 – Jesper 2013-05-01 13:08:08

+0

你的'list'是一個自定義比較器的集合嗎?這是我能想到的唯一的原因,即list.contains(new Point(2,3))會返回false。在正常的集合中,這返回'true'。我剛剛檢查過。 – 2013-05-01 13:18:46

回答

2

試試這個:

list.contains(new Point(2,3)) 
+0

如果列表包含P1(1,2),P2(2,3),P3(3,4),並且如果我們比較另一個對象Pn2(2,3)以檢查它是否屬於列表,那麼它是否爲真:P2.equals(Pn2)? Point不實現Comparable。 – 2013-05-01 13:10:42

+1

它不必實現Comparable。它只需要overrite equals,我認爲它是。 – 2013-05-01 13:17:21

+0

@CristianVrabie你是對的。它會覆蓋equals。'Point pt =(Point)obj; return(x == pt.x)&&(y == pt.y);'從源代碼中獲得。 – 2013-05-01 13:26:25