2012-10-17 12 views
-1

您好我有班級稱爲userdata它返回Userarraylist這是User類型。當我嘗試使用contains方法來檢查特定屬性是否存在時,它總是返回false爲什麼?我有一個arraylist在哪裏我正在驗證特定對象是否存在,但即使它存在它總是返回假

其實我想要數組列表是通用的,它應該返回在數組列表中設置的對象。

String className = data.getUserData().get(0).getClass().getSimpleName(); 

if(className.equalsIgnoreCase("User")) { 
    ArrayList<User> userdata=new ArrayList(); 
    userdata = data.getUserData(); 
    System.out.println(data.getUserData().contains(u.getUserId())); 

    if(userdata.contains(u.getUserName())) { 
     System.out.println(userdata.get(0).getEmailId()); 
    } 
} 
+3

請格式化您的問題。 – twodayslate

+0

所以你的程序看起來像[jquery.min](http://code.jquery.com/jquery-1.8.2.min.js)文件? –

回答

4

ArrayList是用戶,而您正在檢查,看看它是否包含一個ID或字符串。

userdata.contains(u); 
+0

它包含所有字符串 –

+1

@RaghavenderReddy號包含用戶。 –

+1

列表 userdata = new ArrayList (); – twodayslate

3

的問題是,在ArrayList包含Objects,而不是那些對象的ID的。

您正在嘗試比較u.getUserId到列表中的對象,這不是一個有效的比較(用戶!= INT)

UPDATE

boolean contains = false; 
for (User user : userdata) { 
    // assuming userID is a number!! 
    if(user.getUserId() == u.getUserId()) { 
     contains = true; 
     break; 
    } 
} 
+0

我想知道數組列表中存在哪些屬性,我可以實現這個目標嗎? –

+1

['List.contains'](http://docs.oracle.com/javase/7/docs/api/java/util/List.html#contains%28java.lang.Object%29)比較您傳遞的對象到列表中的對象,並將返回true,如果'o == null? e == null:o.equals(e)'(即兩個對象必須相等)。實現這一點的最好方法就是遍歷列表,比較列表中的對象的'getUserId'與'u.getUserId()' – MadProgrammer

+0

我嘗試以這種方式爲(User users1:userdata){ \t如果(userdata.contains(users1。getEmailId())){ \t System.out.println(「Name:」); \t} \t}即使它不工作 –

0

不能使用含有在具有其屬性的User對象列表中,即user.userIduser.email

更好的覆蓋equals方法User類比較的屬性如下:

@Override 
public boolean equals(Object obj) { 
     User other = (User) obj; 
     if (userId == null) { 
     if (other.userId != null) 
     return false; 
     } else if (!userId.equals(other.userId)) 
      return false; 
     if (userName == null) { 
     if (other.userName != null) 
      return false; 
     } else if (!userName.equals(other.userName)) 
     return false; 
    return true; 
    } 

,然後用contains作爲

userdata.contains(u) 
2

只是一個側面說明,你應該使用的instanceof操作或Class.equals方法,而不是獲取簡單名稱名稱檢查是否與某個字符串相等。

+0

我想獲取存儲在ArrayList中,我不想值的屬性,假設我的用戶類是有10個物業,但在我的ArrayList我只加3它們之間的屬性,我想知道我在數組列表中添加了哪些屬性 –

0

應該是這樣 userdata.get(SOME_INDEX).getUserName.equals(u.getUserName());

,或者如果你要掃描整個ArrayList中使用該行的內部for循環

for (User user : userdata) { 

    if(user.getUserName().equals(u.getUserName())) { 
     return true; 
    } 
} 

請注意,我假設沒有爲用戶名屬性的getter

相關問題