Java 我试图在一个对象数组上循环,以返回匹配的索引
我试图编写一个类,该类包含一个方法,该方法基于对对象属性之一的搜索返回对象索引列表 我有一个阵列车,它有5个具有三种不同属性的对象:颜色、品牌、型号Java 我试图在一个对象数组上循环,以返回匹配的索引,java,loops,methods,indexing,match,Java,Loops,Methods,Indexing,Match,我试图编写一个类,该类包含一个方法,该方法基于对对象属性之一的搜索返回对象索引列表 我有一个阵列车,它有5个具有三种不同属性的对象:颜色、品牌、型号 public class Car { String color; String make; String model; public Car(String color, String make, String model){ this.color = color; this.make = m
public class Car {
String color;
String make;
String model;
public Car(String color, String make, String model){
this.color = color;
this.make = make;
this.model = model;
}
Car[] myCars =new Car[5];
myCars[0]=new Car("red", "lexus", "rc350");
myCars[1]=new Car("white", "honda", "accord");
myCars[2]=new Car("red", "honda", "accord");
myCars[3]=new Car("black", "ford", "mustang");
myCars[4]=new Car("gray", "lincoln", "navigator");
现在,我尝试循环遍历这个数组,以便搜索给定的属性,例如颜色为红色,我希望将索引0和2添加到新列表中
类似这样的事情是我正在尝试和思考的,希望它能返回一个ArrayList或“0”和“2”的数组:
public class SearchObject{
List <Integer> getObject (String propertyName, String propertyValue)
searchobject. getObject(“color”,“red”);
公共类搜索对象{
List getObject(String propertyName、String propertyValue)
getObject(“颜色”、“红色”);
我是Java和编程新手,非常感谢您的帮助。提前感谢。在Java中,通过字符串搜索对象有点奇怪。您可以创建一个示例实体并填充要搜索的变量。类似于以下代码:
public class Car {
String color;
String make;
String model;
public Car(){
}
public Car(String color, String make, String model) {
this.color = color;
this.make = make;
this.model = model;
}
public boolean equals(Car car){
if(car.color!= null && !car.color.equals(this.color) )
return false;
else if(car.make!= null && !car.make.equals(this.make) )
return false;
else if(car.model!= null && !car.model.equals(this.model) )
return false;
return true;
}
public static void main(String[] args) {
Car[] myCars = new Car[5];
myCars[0] = new Car("red", "lexus", "rc350");
myCars[1] = new Car("white", "honda", "accord");
myCars[2] = new Car("red", "honda", "accord");
myCars[3] = new Car("black", "ford", "mustang");
myCars[4] = new Car("gray", "lincoln", "navigator");
Car sampleCar = new Car();
sampleCar.color = "red";
List<Car> filteredCars = Arrays.stream(myCars).filter(i -> i.equals(sampleCar)).collect(Collectors.toList());
}
}
公车{
字符串颜色;
串制;
弦模型;
公共汽车{
}
公共汽车(串颜色、串品牌、串型号){
这个颜色=颜色;
make=make;
this.model=模型;
}
公共布尔等于(汽车){
if(car.color!=null&&!car.color.equals(this.color))
返回false;
else如果(car.make!=null&&!car.make.equals(this.make))
返回false;
else如果(car.model!=null&&!car.model.equals(this.model))
返回false;
返回true;
}
公共静态void main(字符串[]args){
汽车[]我的汽车=新车[5];
myCars[0]=新车(“红色”、“雷克萨斯”、“rc350”);
myCars[1]=新车(“白色”、“本田”、“雅阁”);
myCars[2]=新车(“红色”、“本田”、“雅阁”);
myCars[3]=新车(“黑色”、“福特”、“野马”);
myCars[4]=新车(“灰色”、“林肯”、“领航员”);
汽车样品汽车=新车();
sampleCar.color=“红色”;
List filteredCars=Arrays.stream(myCars).filter(i->i.equals(sampleCar)).collect(collector.toList());
}
}
一种方法是将布尔方法添加到Car
类中。例如:
public boolean isColor(String aColor){
boolean ret = false;
if(this.color.compareTo(aColor) == 0){
ret = true;
}
return ret;
}
将
switch
语句嵌套在for()
-循环中,并保存for循环计算结果为true的索引。switch语句应使用查询的第一部分来确定哪个方法:isColor()
isMake()
isModel()
调用。如果数据不经常更改,还可以预填充哈希表(对象的每个属性/方面对应一个),以加快搜索速度