如何在Java的ArrayList中获取一个值

12

我正在尝试从ArrayList中获取一个值。这是我的代码示例:

public static void main (String [] args){
    Car toyota= new Car("Toyota", "$10000", "300"+ "2003");
    Car nissan= new Car("Nissan", "$22000", "300"+ "2011");
    Car ford= new Car("Ford", "$15000", "350"+ "2010");

    ArrayList<Car> cars = new ArrayList<Car>();
    cars.add(toyota);        
    cars.add(nissan);
    cars.add(ford);
}

public static void processCar(ArrayList<Car> cars){

   // in heare i need a way of getting the total cost of all three cars by calling 
    //  computeCars ()
    System.out.println(cars.get());
}

修订版 感谢所有的答案,我应该在代码中添加更多内容。在汽车类中,我有另一个方法来计算包括税费在内的总费用。

class Car {
    public Car (String name, int price, int, tax, int year){
        constructor.......
    }

    public void computeCars (){
        int  totalprice= price+tax;
        System.out.println (name + "\t" +totalprice+"\t"+year );
     } 
}

在主类中。
public static void processCar(ArrayList<Car> cars){
    int totalAmount=0;
    for (int i=0; i<cars.size(); i++){
        cars.get(i).computeCars ();
        totalAmount=+ ?? // in need to add the computed values of totalprice from the  Car class?
    }
}

再次感谢

7个回答

15
假设你的 Car 类有一个价格 getter 方法,你可以简单地使用:
System.out.println (car.get(i).getPrice());

其中i是元素的索引。

你也可以使用

Car c = car.get(i);
System.out.println (c.getPrice());

你需要从函数中返回totalprice,如果需要存储它。 主要的
public static void processCar(ArrayList<Car> cars){
    int totalAmount=0;
    for (int i=0; i<cars.size(); i++){
        int totalprice= cars.get(i).computeCars ();
        totalAmount=+ totalprice; 
    }
}

将您的函数的return类型更改为:

public int computeCars (){
    int  totalprice= price+tax;
    System.out.println (name + "\t" +totalprice+"\t"+year );
    return  totalprice; 
 }

嗨,感谢您的帮助,我尝试了那个方法,但它说它期望一个整数,但找到了void。我不确定如何解决这个问题。再次感谢。 - blackStar

4

你没有说明你的汽车类型,但是假设你想要第一辆汽车的价格,你可以使用以下代码:

public static void processCars(ArrayList<Car> cars) {
    Car car = cars.get(0);
    System.out.println(car.getPrice());
}

请注意,我已将列表的名称从car更改为cars - 这是一组汽车,而不是单个汽车。(我已以类似的方式更改了方法名。) 如果您只想让方法处理一个单独的汽车,您应该将参数更改为Car类型:
public static void processCar(Car car)

然后像这样调用它:

// In the main method
processCar(cars.get(0));

如果您将其保留为处理整个列表,那么值得将参数泛化为 List<Car> - 您不太可能真正需要它是一个 ArrayList<Car>

ArrayList 中的类型应该是 Car,而不是 Cars 😉 - stiank81
@stiank81: 我想你是打算回应home的答案,而不是我的答案... - Jon Skeet
其实你的也有错,但是Petar已经编辑过了。不过没关系。 - stiank81

2
主类
public class Test {
    public static void main (String [] args){
        Car thisCar= new Car ("Toyota", "$10000", "2003");  
        ArrayList<Car> car= new ArrayList<Car> ();
        car.add(thisCar); 
        processCar(car);
    } 

    public static void processCar(ArrayList<Car> car){
        for(Car c : car){
            System.out.println (c.getPrice());
        }
    }
}

car class

public class Car {
    private String vehicle;
    private String price;
    private String model;

    public Car(String vehicle, String price, String model){
        this.vehicle = vehicle;
        this.model = model;
        this.price = price;
    }

    public String getVehicle() {
        return vehicle;
    }

    public String getPrice() {
        return price;
    }

    public String getModel() {
        return model;
    }  
}

1
你应该把列表命名为cars而不是car,这样它的名称才能匹配其内容。

然后你就可以简单地使用cars.get(0).getPrice()。如果你的Car类还没有这个方法,你需要创建它。


0

列表可能包含多个元素,因此get方法需要一个参数:您想检索的元素的索引。如果您想要第一个元素,则索引为0。

该列表包含汽车实例,因此您只需执行

Car firstCar = car.get(0);
String price = firstCar.getPrice();

或者只是

String price = car.get(0).getPrice();

car 变量应该被命名为 cars,因为它是一个列表,因此包含多个汽车。

阅读关于集合的教程tutorial about collections。并学习使用javadoc:所有的类和方法都有文档说明。


0
如果你想获得所有汽车的价格,你必须遍历数组列表:
public static void processCars(ArrayList<Cars> cars) {
   for (Car c : cars) {
       System.out.println (c.getPrice());
   }
}

0
import java.util.*;
import java.lang.*;
import java.io.*;

class hari
{
public static void main (String[] args) throws Exception
{  Scanner s=new Scanner(System.in);
    int i=0;
    int b=0;
    HashSet<Integer> h=new HashSet<Integer>();
    try{
        for(i=0;i<1000;i++)
    {   b=s.nextInt();
        h.add(b);
    }
    }
    catch(Exception e){
        System.out.println(h+","+h.size());
    }
}}

这个解决方案完美地适合您的问题...我希望。 - Harisivaram Alagani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接