使用多列将单个元素检入ArrayList

时间:2016-03-18 16:26:06

标签: java arraylist

我有一个ArrayList:

ArrayList <Elem> list=new ArrayList <Elem>();

其中

class Elem{
public String name;
public int a;
public int b;
} 

我在这个ArrayList中添加了几个不同的对象,其中每个对象包含3个元素 - String,int,int。

现在我想知道输入中给出的Name是否已经在ArrayList中。 我该怎么办? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

如果你可以使用Java 8,你应该尝试一下:

list.parallelStream().filter(elem -> elem.getName().equals(name)).findAny().isPresent();

对于大量列表,它的工作速度非常快,如果可以在列表中找到该名称,则返回true。元素(否则为假)。

更新:如果您不仅要获取标记,可以找到具有给定名称的元素,但是元素本身及其值应该使用类似的内容:

Optional<Elem> elemOpt = list.parallelStream().filter(elem -> elem.getName().equals(name)).findAny();

if(elemOpt.isPresent()){
    //do some logic with element if exists
    Elem elem = elemOpt.get();
    System.out.println(elem.getName());
    System.out.println(elem.getA());
    System.out.println(elem.getB());
    ...
}

答案 1 :(得分:0)

您可以使用自Java 8以来的Lambdas ...

或者你迭代列表并在元素配置时中断

实施例

List<Elem> l=new ArrayList<Elem>();
boolean flag = false;
for (Elem elem : l) {
if (elem.getName().equalsIgnoreCase("myNameTest")) {
    flag = true;
    break;
}

if (flag) {
    System.out.println("Element found");
}