【问题标题】:Java - searching string in ArrayList of objectsJava - 在对象的 ArrayList 中搜索字符串
【发布时间】:2015-05-26 19:24:07
【问题描述】:

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

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();
                            }
                    }

所以...当有人给我全名、姓氏或电话号码时,我知道如何搜索...但我希望它始终像这样搜索:

键入要搜索的文本: 克尔兹

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

等等等等

我该怎么做?

【问题讨论】:

    标签: java search arraylist


    【解决方案1】:
        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)
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2020-03-21
        • 1970-01-01
        • 2016-07-14
        • 1970-01-01
        • 1970-01-01
        • 2016-01-07
        • 2018-06-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多