Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我试图在一个对象数组上循环,以返回匹配的索引_Java_Loops_Methods_Indexing_Match - Fatal编程技术网

Java 我试图在一个对象数组上循环,以返回匹配的索引

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

我试图编写一个类,该类包含一个方法,该方法基于对对象属性之一的搜索返回对象索引列表

我有一个阵列车,它有5个具有三种不同属性的对象:颜色、品牌、型号

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()
调用。

如果数据不经常更改,还可以预填充哈希表(对象的每个属性/方面对应一个),以加快搜索速度