2017-05-31 96 views
1

我有在裏面,並在其內容的其他對象的內容列表中的對象而不列表類似下面與內容列表進行比較的對象到另一個對象

List<LoginInformation> allUsersLoginInfo 
LoginInformation loginInformation 

現在我想要的代碼比較這兩個,看看loginInformation的元素是否存在於allUsersLoginInfo

LoginInformation是一個模型類。

它有名字和Rollnumber。

因此,allUserLoginInfo是一個列表,其中包含Name和Rollnumber的多個值。

現在,我想比較並查看是否有任何值的loginInformation(即Name或RollNumber的值)在allUserLoginInfo中出現,然後給我真正的其他假,並指出沒有值是相等的。

在此先感謝

+0

看到https://stackoverflow.com/questions/13051568/making-your-own-class-comparable –

+0

_Now我想牛逼o比較這兩個,看看loginInformation的元素是否存在於allUsersLoginInfo_中,什麼決定了兩個或更多的對象是相等的? –

+0

@Aominè我編輯了這個問題給更多的信息 – Vamsi

回答

0

您可以使用Stream#anyMatch來完成手頭的任務。

if(allUsersLoginInfo.stream().anyMatch(m -> m.getName().equals(loginInformation.getName()) 
        || m.getRollNumber() == loginInformation.getRollNumber())){ 
     //exists 
}else{ 
     // does not exist 
} 
+0

嗨,我試過這個解決方案,但得到ArrayOutOfBounds異常。 請找到堆棧跟蹤的部分。 java.lang.IndexOutOfBoundsException:索引:11,尺寸:1 \t java.util.ArrayList.rangeCheck(ArrayList.java:653) \t java.util.ArrayList.get(ArrayList.java:429) – Vamsi

+0

錯誤不是來自我發佈的代碼...必須在代碼中的其他地方。正如您從代碼中可以清楚地看到的,我不會索引任何內容。 –

+0

我的不好。我得到並修復了它。感謝您的迴應。它爲我工作 – Vamsi

0

你可以這樣做:

allUsersLoginInfo.contains(loginInformation); 

,但你需要正確地覆蓋在類LoginInformation equals方法,如果不是,該列表將永遠找不到的元素,將返回false ...

0
lUsersLoginInfo.contains(loginInformation) 

可能是你在找什麼 如果有很多的信息在列表中,我建議使用一個集合。但您最好不要將密碼保存在用戶信息中...

0

你可以使用Apache Commons爲Java之前1.8

此示例中找到,如果loginInformation的任何值(即,無論是名稱還是RollNumber的值)呈現allUserLoginInfo:

LoginInformation res = CollectionUtils.find(allUsersLoginInfo, new Predicate<LoginInformation >() { 
     @Override 
     public boolean evaluate(LoginInformation o) { 
      return o.getName().equals(yourloginInformation.getName()) || o.getRollnumber() == yourloginInformation.getRollnumber(); 
     } 
    }); 

對於Java 1.8使用青峯迴答

相關問題