处理对象数组

时间:2015-04-02 15:25:45

标签: java object arraylist

我有以下课程,我将在其中存储用户的姓名和职位,

public class NameAndPosition {

    private String name = "";
    private LatLng position = null;


    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public LatLng getPosition() {
        return position;
    }
    public void setPosition(LatLng position) {
        this.position = position;
    }

}

在我的MainActivity课程中,我创建了一个ArrayListNameAndPostion的对象,

ArrayList<NameAndPosition> LocSenders = new ArrayList<NameAndPosition>();

在我的代码中的某个地方,我想检查LocSenders是否包含具有给定名称的用户。我不想在这里担任重要职务。我只想在LocSenders ArrayList中查看名称。

e.g。我已经指定了一个名称John然后我想要在ArrayList中检索名为John的那些对象。

怎么做?

提前致谢。

2 个答案:

答案 0 :(得分:3)

从Java 8开始,您可以使用Stream API来实现这类目标。

Collection<NameAndPosition> list = ...;
String name = ...;
boolean inList = list.stream().anyMatch(e -> name.equals(e.getName()));

答案 1 :(得分:2)

您需要遍历它们并查看每个名称:

public static boolean ListContainsName(List<NameAndPosition> list, String name) {
    for (NameAndPosition nandp : list)
       if (name.equals(nandp.getName()))
         return true;
    return false;
}

用法:

if (ListContainsName(LocSenders, "John"))
  // then John is in list

替代地

如果按姓名查找很常见,您是否考虑过地图:

Map<String, LatLng> sendersLocations = new HashMap<String, LatLng>();

然后查找更容易,更有效:

if (sendersLocations.containsKey("John"))
  // then John is in list

获得职位同样容易:

LatLng pos = sendersLocations.get("John");