我有一个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中。 我该怎么办? 提前谢谢。
答案 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");
}