Java - 在对象的 ArrayList 中搜索字符串
Java - searching string in ArrayList of objects
我得到了我的 class 构造函数:
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();
}
}
所以...我知道当有人给我全名、姓氏或电话号码时如何搜索...但我希望它始终像这样搜索:
输入要搜索的文字:
克尔兹
所以它会找到
克日什托夫·马雷茨基 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 class 编写一个 toString 方法,然后像这样测试它:
Dane d = listaOsob.get(i)
d.toString().contains(searchTxt)
我会选择Java8的新函数表示法,它更简单,更优雅,是语言未来的趋势。
//如果您只想要该搜索的第一个结果
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"));
我得到了我的 class 构造函数:
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();
}
}
所以...我知道当有人给我全名、姓氏或电话号码时如何搜索...但我希望它始终像这样搜索:
输入要搜索的文字: 克尔兹
所以它会找到 克日什托夫·马雷茨基 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 class 编写一个 toString 方法,然后像这样测试它:
Dane d = listaOsob.get(i)
d.toString().contains(searchTxt)
我会选择Java8的新函数表示法,它更简单,更优雅,是语言未来的趋势。
//如果您只想要该搜索的第一个结果
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"));