2015-12-31 49 views
0

我有一個ArrayList其中包含的Train個清單:Java的ArrayList的搜索方法

package train; 

public class Train { 

    private String nom; 
    private String villeDepart, villeArrivee; 

    public Train() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 
    public Train(String nom, String villeDepart, String villeArrivee) { 
     super(); 
     this.nom = nom; 
     this.villeDepart = villeDepart; 
     this.villeArrivee = villeArrivee; 
    } 
    public String getNom() { 
     return nom; 
    } 
    public void setNom(String nom) { 
     this.nom = nom; 
    } 
    public String getVilleDepart() { 
     return villeDepart; 
    } 
    public void setVilleDepart(String villeDepart) { 
     this.villeDepart = villeDepart; 
    } 
    public String getVilleArrivee() { 
     return villeArrivee; 
    } 
    public void setVilleArrivee(String villeArrivee) { 
     this.villeArrivee = villeArrivee; 
    } 
} 

我想villeDepartvilleArrivee搜索ArrayList。我怎樣才能做到這一點?

+1

請參閱http://stackoverflow.com/questions/985229/search-in-java-arraylist尋找解決方案(基本上,您需要遍歷整個列表,找一個匹配的「for」)。 –

+0

覆蓋類中的equals方法。 – Atri

回答

2

正如我能想到的,你必須使用一個循環,並通過整個列表。

for each (Train train in list) { 
    String villeDepart = train.getVilleDepart(); 
    String villeArrivee = train.getVilleArrivee(); 

    if (villeDepart.equals("String you want to match") && villeArrivee.equals("Next String to match") { 
    //You got your train 
    } 
} 

編輯:

正如@Atri提到的,​​你可以重寫你的equals方法。這很容易。 在你Train類,

@Override 
public boolean equals(Object obj) { 
    Train train = (Train) obj; 
    if (this.villeArrivee.equals(train.getVilleArrivee()) && this.villeDepart.equals(train.getVilleDepart())) { 
    return true; 
    } else { 
    return false; 
    } 
} 

在SO閱讀This Question

+1

使用類似'for(Train t:trainList){... t.getVilleDepart()...}的foreach循環更優雅... –

+0

謝謝。我會更新這個。 –

+0

認爲兄弟,但我想寫一個方法,它返回列表的列表:像這樣:public List getTrains(String villeDepart,String villeArrivee){}我怎麼能做到這一點arrayList –