2016-07-18 41 views
0

我需要在ArrayList中找到car元素。这样
{ [1,mobile,5000] [2,car,50000] [3,bike,20000] }如何在java中搜索ArrayList中的元素?

和类ArrayList的数据是

//pro.java 
import java.util.*; 
public class Pro{ 

private int id; 
private String name; 
private int price; 

public String toString(){ 
return id+" "+name+" "+price; 
} 
//getter & setter methods 
} 

和搜索代码是这样的

//Product.java 
System.out.println("enter name you want to search"); 
name = scanner.next(); 
Iterator it=al.iterator(); 
while(it.hasNext()){ 
if(it.next() == name){ 
System.out.println("Yes found"); 
} 
else{ 
System.out.println("Not Found"); 
} 
} 

it是迭代器参考对象和al是该ArrayList参考对象。

搜索总是返回未找到,但找到的元素存在。如何修复它以返回FOUND?请帮我用适当的代码谢谢。

+2

不要推倒重来。使用'List#contains'。 – m0skit0

+0

除了“不使用==比较字符串”之外,您还可以考虑在Product类中定义合适的equals和hashCode方法;这将允许您使用Java集合为您提供的各种“查找”方法。 – GhostCat

+0

这不仅是字符串比较 - 它还与'String'共同映射'Pro'。 – flo

回答

0

你可以试试这个

ArrayList<Pro> al=new ArrayList<Pro>(); 
    Iterator<Pro> it=al.iterator(); 
    while(it.hasNext()){ 
     if(it.next().getName().equals(name)){ 
     System.out.println("Yes found"); 
     } 
     else{ 
     System.out.println("Not Found"); 
     } 
    } 
+0

在这里需要输入it.next() – Jeet

+1

@Jeet不,变量被参数化。 –

+1

@barsik正确,我错过了。 – Jeet