Java 从对象的ArrayList访问方法

Java 从对象的ArrayList访问方法,java,object,arraylist,Java,Object,Arraylist,我想知道如何使用方法访问ArrayList中对象的特定元素,但似乎无法使其正常工作。 我有一个具有int price和字符串颜色的Phone对象,还有一个返回颜色的方法。 public class Phone { private int price; private String color; 现在让我们假设我创建了一个名为phoneCatalog的电话对象数组列表,并添加了各种电话。 我如何计算有多少部手机是红色的?这是我没有成功的尝试: int count = 0; for(int

我想知道如何使用方法访问ArrayList中对象的特定元素,但似乎无法使其正常工作。
我有一个具有int price和字符串颜色的Phone对象,还有一个返回颜色的方法。

public class Phone

{
private int price;
private String color;


现在让我们假设我创建了一个名为phoneCatalog的电话对象数组列表,并添加了各种电话。 我如何计算有多少部手机是红色的?这是我没有成功的尝试:

int count = 0;

for(int x = 0; x < phoneCatalog.size(); x++)
if((phoneCatalog.get(x)).getColor.equals("red")
count++;
int count=0;
对于(int x=0;x
您需要将您的
计数
放入if语句中,以便每次条件变为真时,计数的值都会得到更新。如下所示:

    public class Main {
    private int price;
    private String color;
    public Main(int price, String color) {
        this.price = price;
        this.color = color;


    }
    public String getColor() {
        return color;
    }
    public int getPrice() {
        return price;
    }
    public static void main(String[] args) {
        System.out.println("Hello World");
        ArrayList < Main > list = new ArrayList < Main > ();
        list.add(new Main(1, "Red")); //Adding object in arraylist    
        list.add(new Main(2, "Blue"));
        list.add(new Main(3, "Red"));
        list.add(new Main(4, "Red"));
        int count = 0;
        //looping through values
        for (int i = 0; i < list.size(); i++) {
            //checking all value in array list 
            if (list.get(i).getColor().equals("Red")) {
                count++;//increment count
            }
        }
        System.out.println("Total Red Color are " + count);
    }
}

您需要将您的
count
放入if语句中,以便每次条件变为true时,count的值都会得到更新。如下所示:

    public class Main {
    private int price;
    private String color;
    public Main(int price, String color) {
        this.price = price;
        this.color = color;


    }
    public String getColor() {
        return color;
    }
    public int getPrice() {
        return price;
    }
    public static void main(String[] args) {
        System.out.println("Hello World");
        ArrayList < Main > list = new ArrayList < Main > ();
        list.add(new Main(1, "Red")); //Adding object in arraylist    
        list.add(new Main(2, "Blue"));
        list.add(new Main(3, "Red"));
        list.add(new Main(4, "Red"));
        int count = 0;
        //looping through values
        for (int i = 0; i < list.size(); i++) {
            //checking all value in array list 
            if (list.get(i).getColor().equals("Red")) {
                count++;//increment count
            }
        }
        System.out.println("Total Red Color are " + count);
    }
}

if((phoneCatalog.get(x)).getColor.equals(“红色”)
应该是
if(phoneCatalog.get(x).getColor().equals(“红色”)
对吧?你说这是我不起作用的尝试是什么意思?告诉我们问题
if((phoneCatalog.get(x)).getColor.equals(“红色”)
应该是
if(phoneCatalog.get(x).getColor().equals(“红色”)
对吗?这是什么意思?这是我的尝试,但不起作用?告诉我们这个问题我不想成为批评家,但是整个
psvm
可以用一行替换:
long count=Stream.of(new Main(1,“Red”)、new Main(…)、new Main(…)、map(Main::getColor).filter(c->c.equals(“Red”).count())
不知道。谢谢你的建议。我不想成为一个批评家,但是整个
psvm
可以被一行替换:
long count=Stream.of(new Main(1,“Red”)、new Main(…)、…).map(Main::getColor)。filter(c->c.equals(“Red”)。count();谢谢你的建议。
Total Red Color are 3