JAVA中 ArrayList遍历时如何修改自定义类的属性值呢

问题遇到的现象和发生背景

题目如下:1、定义一个Product类,该类有String id和double price两个属性,定义无参、有两个参数的构造方法,定义一个void list()方法,该方法在控制台输出id和price属性值,定义getter/setter方法,
2、设计测试类Test,在其main()内创建一个空的ArrayList容器,先创建6个Product对象,依次前5个对象添加到容器中,该容器进行遍历,调用每个对象的list()方法;将索引为1的对象修改为第6个对象,删除索引为3的对象,对该容器进行遍历,遍历时如果对象的price大于1000,则将price修改为原price的0.8倍,再调用对象的list()方法

问题相关代码,请勿粘贴截图

主要问题有:1、在Product类中定义void list()后,运行测试类输出的是乱码;后修改为tostring输出解决问题,但未达到题目要求;
2、不知道如何写出“对该容器进行遍历,遍历时如果对象的price大于1000,则将price修改为原price的0.8倍,再调用对象的list()方法”的代码。

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

完成题目内容,解决目前遇到的困难,主要是如何在遍历中修改Price的值以及调用对象的list()方法

1、在Product类中定义void list()后,运行测试类输出的是乱码;后修改为tostring输出解决问题,但未达到题目要求;
直接输出对象,输出的是地址,需要重写object的toString方法,才能输出属性值。
2、不知道如何写出“对该容器进行遍历,遍历时如果对象的price大于1000,则将price修改为原price的0.8倍,再调用对象的list()方法”的代码。
foreach 循环遍历集合就行,对条件进行判断,满足条件,就通过对象.setPrice()方法修改。

List<Product> products= new ArrayList<>();
//省略向list放入对象过程
for(Product  product :products){
  if(product.getPrice()>1000){
      product.setPrice(0.8 * product.getPrice());
      product.list()
   }
}


import java.util.ArrayList;
public class Test{
    public static void main(String[] args){
        ArrayList<Product> productlist=new ArrayList<Product>();
        Product p1=new Product("牙膏",10);
        Product p2=new Product("牙刷",12);
        Product p3=new Product("电冰箱",1200);
        Product p4=new Product("洗衣机",850);
        Product p5=new Product("台灯",125);
        Product p6=new Product("沙发",5200);
        productlist.add(p1);
        productlist.add(p2);
        productlist.add(p3);
        productlist.add(p4);
        productlist.add(p5);
        for(int i=0;i<productlist.size();i++){
             System.out.println(productlist.get(i));
        }
        productlist.remove(1);
        productlist.set(1,p6);
        productlist.remove(3);
        System.out.println("-----------------------");
//修改后依旧没有输出内容,并且price的值也没有改变
        for(Product product:productlist){
            if(product.getPrice()>1000){
                product.setPrice((0.8)*product.getPrice);
            }
        }
    }        
}
class Product{
    private String id;
    private double price;
    public Product(){}
    public Product(String id,double price){
        this.id=id;
        this.price=price;
    }
    public String toString(){
        return "id:"+this.id+"    price:"+this.price;
    }
    public String getId(){
        return id;
    }
    public void setId(String id){
        this.id=id;
    }
    public double getPrice(){
        return price;
    }
    public void setPrice(double price){
        this.price=price;
    }
}
 

img

编译运行结果不符合题意:foreach遍历没有输出、price的值没有更改