Android ArrayList:检查另一个ArrayList存在的元素

时间:2014-11-19 07:54:42

标签: java android arraylist

我有两个ArrayList

private ArrayList<Friend> friendsList = new ArrayList<Friend>();
private ArrayList<Friend> myFriendsList = new ArrayList<Friend>();

第一个包含数据库的所有Friend。第二个仅包含用户Friend。在我的搜索选项(SearchManager)中,我ListView包含friendsList的搜索朋友。当我选择Friend ListView时,我想检查Friend中是否存在myFriendsList。我使用了以下代码

friendListView
            .setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    handelListItemClick(adapter.getItem(position));
                }
            });


    private void handelListItemClick(Friend friend) {

    for(Friend fr: myFriendsList){
        Log.v("Check User Name:", fr.getName());
    }
    if (myFriendsList.contains(friend)) {works with matched friend}

但它无法检查Friend中的所选myFriendsList。在LogCat中,它会显示myFriendsList个信息。提前谢谢。

更新 这是我的Friend课程

public class Friend {

private String id, name, thumbnailUrl;

public Friend() {
}

public Friend(String name, String thumbnailUrl) {
    this.name = name;
    this.thumbnailUrl = thumbnailUrl;
}

public Friend(String name, String thumbnailUrl, String id) {
    this.name = name;
    this.thumbnailUrl = thumbnailUrl;
    this.id = id; 
}

public String getID(){
    return id;
}

public void setID(String id){
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getThumbnailUrl() {
    return thumbnailUrl;
}

public void setThumbnailUrl(String thumbnailUrl) {
    this.thumbnailUrl = thumbnailUrl;
}

}

2 个答案:

答案 0 :(得分:0)

为了能够使用方法查找和搜索contains您的自定义类必须正确实现hasCodeequals方法。

以下link有关实施hasCodehere的实施equals。这是我最喜欢的Java Best Practices网站,也是我从中学到的。

答案 1 :(得分:0)

在大多数集合中使用equals()来确定集合是否包含给定元素

计算此对象的hashCode()并用于确定在哈希表中搜索对象的位置。

有关这两个主题的详细信息,请访问oracle webiste或查看here

如果只有他们的id相等,你可以决定两个Friend对象彼此相等。

所以,在你的朋友班中包括

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof Friend)) return false;

    Friend friend = (Friend) o;

    if (!id.equals(friend.id)) return false;

    return true;
}

@Override
public int hashCode() {
    return id.hashCode();
}

现在就做,

private void handelListItemClick(Friend friend) {
    if (myFriendsList.contains(friend)) {works with matched friend}
}

修改

您可以查看this教程以了解有关该主题的更多信息