Java静态方法ArrayList
我有两道菜,叫水果和球。对于它们中的每一个,一个属性就是价格。我需要做一个静态的方法,从一个混合中返回一个只有最小价格的元素。我有对象f1,f2,f3,b1,b2,b3 我制作了一个如下的ArrayList列表:Java静态方法ArrayList,java,Java,我有两道菜,叫水果和球。对于它们中的每一个,一个属性就是价格。我需要做一个静态的方法,从一个混合中返回一个只有最小价格的元素。我有对象f1,f2,f3,b1,b2,b3 我制作了一个如下的ArrayList列表: { Fruit f1 = new Fruit("Apple", "Red", "Summer", 9.5); ... Ball b1 = new Ball("Red", "Stripes", 10.5); ... ArrayList list = new ArrayLi
{ Fruit f1 = new Fruit("Apple", "Red", "Summer", 9.5);
...
Ball b1 = new Ball("Red", "Stripes", 10.5);
...
ArrayList list = new ArrayList();
list.add(f1);
list.add(b1);
...
}
static void method(ArrayList list) {
for (int i = 0; i < lista.size(); i++) {
}
Apple apple = new Apple();
RedBall redBall = new RedBall();
ArrayList<Price> items = new ArrayList<Price>();
items.addAll(apple, redBall);
现在关于我要做的方法,我是这样开始的:
{ Fruit f1 = new Fruit("Apple", "Red", "Summer", 9.5);
...
Ball b1 = new Ball("Red", "Stripes", 10.5);
...
ArrayList list = new ArrayList();
list.add(f1);
list.add(b1);
...
}
static void method(ArrayList list) {
for (int i = 0; i < lista.size(); i++) {
}
Apple apple = new Apple();
RedBall redBall = new RedBall();
ArrayList<Price> items = new ArrayList<Price>();
items.addAll(apple, redBall);
静态无效方法(ArrayList列表){
对于(int i=0;i
我被从数组中取出元素和用于查找每个元素的价格的getter的组合所困扰。你能帮我吗
即使你不明白我想做什么,你能帮我介绍一些混合不同元素的技巧吗?谢谢!所以你遇到的问题是你没有键入列表,创建一个
新ArrayList()
而不指定类型在功能上与创建一个新ArrayList()相同
。然后从该列表中调用项目时,将返回一个对象
,该对象没有price
属性
通过streams的实现,您可以找到一个相当简单的解决方案:
double minFruitPrice = Stream.of(f1, f2, f3)
.reduce((acc, val) -> acc.price < val.price ? acc : val)
.orElseThrow(() -> new RuntimeException("No fruits provided!")) // reduce with 1 argument returns an optional
.getPrice(); // Always use a getter
然后创建您的水果
和球
对象,它们将扩展该类(接受其属性)
及
然后在上面给出的streams实现中使用这些对象:
Stream.of(f1, f2, f3, b1, b2, b3)
.reduce((acc, val) -> acc.getPrice() < val.getPrice() ? acc : val);
(f1、f2、f3、b1、b2、b3)流
.reduce((acc,val)->acc.getPrice()它将以最低的价格返回一个
PricedItem
。然后您可以调用.get()
从可选项中获取值,尽管使用orElse
选项更安全。所以您遇到的问题是您没有键入列表,而是创建了一个新的ArrayList()
不指定类型在功能上与创建新ArrayList()
相同。然后从该列表中调用项目时,将返回一个对象
,该对象没有价格
属性
通过streams的实现,您可以找到一个相当简单的解决方案:
double minFruitPrice = Stream.of(f1, f2, f3)
.reduce((acc, val) -> acc.price < val.price ? acc : val)
.orElseThrow(() -> new RuntimeException("No fruits provided!")) // reduce with 1 argument returns an optional
.getPrice(); // Always use a getter
然后创建您的水果
和球
对象,它们将扩展该类(接受其属性)
及
然后在上面给出的streams实现中使用这些对象:
Stream.of(f1, f2, f3, b1, b2, b3)
.reduce((acc, val) -> acc.getPrice() < val.getPrice() ? acc : val);
(f1、f2、f3、b1、b2、b3)流
.reduce((acc,val)->acc.getPrice()它将以最低的价格返回<代码> PRICEDIDENTION/CODE >。然后可以调用<代码> .GET()/代码>从可选的值中获得,虽然使用<代码> ORSER < /代码>选项更安全。
很少有需要考虑的点。
项
(最简单的名称,您可以选择更多上下文名称)
最好把它变成一个接口,同样因为我们需要访问price,所以让我们有一个函数(我们在Java中调用的方法)命名为
getPrice()
。实现类Ball和Fruit将实现此方法并返回price
属性
但是我们需要在列表中包含Ball和Fruit,所以让我们通过这两个类来实现interfaceItem
我们的ArrayList现在将是
ArrayList < Item > list = new ArrayList<>();
ArrayList- list=newarraylist();
此ArrayList能够添加Ball和Fruit对象,因为这两个类都实现了接口项
现在迭代类型项的ARAYLIST并访问<代码> GETPRICE()>代码>,希望您的工作将完成。 < P> >
项
(最简单的名称,您可以选择更多上下文名称)
最好把它变成一个接口,同样因为我们需要访问price,所以让我们有一个函数(我们在Java中调用的方法)命名为
getPrice()
。实现类Ball和Fruit将实现此方法并返回price
属性
但是我们需要在列表中包含Ball和Fruit,所以让我们通过这两个类来实现interfaceItem
我们的ArrayList现在将是
ArrayList < Item > list = new ArrayList<>();
ArrayList- list=newarraylist();
此ArrayList能够添加Ball和Fruit对象,因为这两个类都实现了接口项
现在迭代Item类型的ArrayList并访问
getPrice()
,希望您的工作能够完成。如果水果和球有价格,您应该
Apple apple = new Apple();
RedBall redBall = new RedBall();
ArrayList<Price> items = new ArrayList<Price>();
items.addAll(apple, redBall);