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

时间:2015-03-23 17:21:03

标签: java search arraylist

我用构造函数得到了我的类:

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'

等等

我该怎么做?

2 个答案:

答案 0 :(得分:2)

    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)

答案 1 :(得分:1)

我选择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"));