簡體   English   中英

Java - 在對象的ArrayList中搜索字符串

[英]Java - searching string in ArrayList of objects

我用構造函數得到了我的類:

public Dane(String Imie, String Nazwisko, String nrTelefonu, int licznik)
 {
    this.id.Imie = Imie;
    this.id.Nazwisko = Nazwisko;
    this.id.nrTelefonu = nrTelefonu;
    this.id.licznik = licznik;

}

和這些對象的ArrayList ......

 static List<Dane> listaOsob = new ArrayList<Dane>();

此刻我正在使用這樣的東西搜索:

for(int i=0;i<listaOsob.size();i++)
                    {
                        if ((listaOsob.get(i).id.Imie).equals("Krzysiek"))
                            {
                                listaOsob.get(i).opis();
                            }
                    }

所以......我知道當有人給我全名,姓氏或電話號碼時如何搜索...但我希望它總是這樣搜索:

鍵入要搜索的文本:Krz

所以它會找到Krzysztof Marecki 700700700 Krzysiek Fraczak 500500500'

等等

我怎樣才能做到這一點?

    Dane d = listaOsob.get(i)
    if(d.id.Imie.contains(searchTxt) || d.id.Nazwisko.contains(searchTxt) ||
        nrTelefonu.contains(searchTxt)|| licznik.toSring().contains(searchTxt)){
        listaOsob.get(i).opis();
    }

或者你可以為你的Dane類編寫一個toString方法,然后像這樣測試它:

Dane d = listaOsob.get(i)
d.toString().contains(searchTxt)

我會選擇Java 8的新功能表示法,它更簡單,更優雅,是該語言未來的趨勢。

//如果你只想要那個搜索的第一個結果

Dave dave = listaOsob.stream().filter((d) -> d.getId().getImie().equals("textSearch")).findFirst().get();

//如果你想要一個搜索結果列表

Collection<Dave> daves = listaOsob.stream().filter((d) -> d.getId().getImie().equals("textSearch")).collect(Collectors.toList());

//如果你只想知道它是否存在

boolean matchedResult = listaOsob.stream().anyMatch((d) -> d.getId().getImie().equals("textSearch"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM