如果我在java中有一个String表对象
Student [] student = new Student [10];
让我们想象
student[0].setName("TOMATO");
student[1].setName("POTATO");
student[2].setName("APPLE");
如何从对象调用方法,但属性名称等于马铃薯?
如果我们使用Linq,那将是:
for(int i=0 ; i<student.lenght; i++)
sutent[i].myMethode().where(sutent[i].getName().equal("POTATO"));
但是如何在JAVA中做到这一点?
我尝试使用 indexOf(String str),但它似乎给了我奇怪的结果
谢谢
答案 0 :(得分:3)
您需要遍历Student array
以查找要在其中调用方法的数组中的特定学生对象。
class Student{
private String name;
Student(){
name = ""; // initialization
}
String getName(){
return name;
}
void setName(String n){
name = n;
}
void somemethod(){ // or any other return type and parameters
...
}
}
public class Main{
Student[] student = new Student[10];
student[0] = new Student();
student[1] = new Student();
...
student[0].setName("TOMATO");
student[1].setName("POTATO");
...
for(Student s : student) {
if(s != null && s.getName.equal("POTATO")) {
s.somemethod();// call on s
}
}
}
答案 1 :(得分:3)
典型的Java答案是:您将考虑使用Map而不是数组。
地图键是学生的名字,地图值是相应的学生对象。
现在查看该学生将以更多内存为代价成为O(1)操作。
换句话说:如果按名称访问学生对象是您的主要用例,那么数组是错误的数据结构。
答案 2 :(得分:3)
在Java 8 +中:
Stream.of(student).filter(s -> s.getName.equals("POTATO"))
.forEach(s -> /* whatever */);