Mok*_*pps 59 java search arraylist custom-object
我有一个带有自定义对象的ArrayList.我想在这个ArrayList中搜索字符串.
对象的类看起来像这样:
public class Datapoint implements Serializable {
private String stateBased;
private String name;
private String priority;
private String mainNumber;
private String groupadress;
private String dptID;
public Datapoint(){
}
public String getMainNumber() {
return mainNumber;
}
public void setMainNumber(String mainNumber) {
this.mainNumber = mainNumber;
}
public String getName() {
return name;
}
..and so on
Run Code Online (Sandbox Code Playgroud)
我知道如何在ArrayList中搜索字符串但是如何使用我的自定义对象在ArrayList中执行此操作:
ArrayList<String> searchList = new ArrayList<String>();
String search = "a";
int searchListLength = searchList.size();
for (int i = 0; i < searchListLength; i++) {
if (searchList.get(i).contains(search)) {
//Do whatever you want here
}
}
Run Code Online (Sandbox Code Playgroud)
所以我希望有一个函数来搜索我的ArrayList,例如所有"name"字符串的五个对象.
Ren*_*tti 89
简单的方法是for在验证name自定义对象的atrrtibute是否具有所需字符串的位置
for(Datapoint d : dataPointList){
if(d.getName() != null && d.getName().contains(search))
//something here
}
Run Code Online (Sandbox Code Playgroud)
我认为这有助于你.
mun*_*ngm 39
更新:使用Java 8语法
List<DataPoint> myList = new ArrayList<>();
//Fill up myList with your Data Points
List<DataPoint> dataPointsCalledJohn =
myList
.stream()
.filter(p-> p.getName().equals(("john")))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
如果你不介意使用外部libaray -您可以使用谓词从谷歌番石榴库如下:
class DataPoint {
String name;
String getName() { return name; }
}
Predicate<DataPoint> nameEqualsTo(final String name) {
return new Predicate<DataPoint>() {
public boolean apply(DataPoint dataPoint) {
return dataPoint.getName().equals(name);
}
};
}
public void main(String[] args) throws Exception {
List<DataPoint> myList = new ArrayList<DataPoint>();
//Fill up myList with your Data Points
Collection<DataPoint> dataPointsCalledJohn =
Collections2.filter(myList, nameEqualsTo("john"));
}
Run Code Online (Sandbox Code Playgroud)
试试这个
ArrayList<Datapoint > searchList = new ArrayList<Datapoint >();
String search = "a";
int searchListLength = searchList.size();
for (int i = 0; i < searchListLength; i++) {
if (searchList.get(i).getName().contains(search)) {
//Do whatever you want here
}
}
Run Code Online (Sandbox Code Playgroud)
大概是这样的:
ArrayList<DataPoint> myList = new ArrayList<DataPoint>();
//Fill up myList with your Data Points
//Traversal
for(DataPoint myPoint : myList) {
if(myPoint.getName() != null && myPoint.getName().equals("Michael Hoffmann")) {
//Process data do whatever you want
System.out.println("Found it!");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
210711 次 |
| 最近记录: |