当前位置: 首页 > 知识库问答 >
问题:

有办法从ArrayList中挑选特定的元素吗?

宗政唯
2023-03-14
39.95 41.1667 2002 04 -9999 -9999 420
ArrayList<TempRead> t = new ArrayList();
public class TempRead {
private double latitude = -100;
private double longitude = -180;
private int year = 0;
private int month = 0;
private double maxTemp = -9999;
private double minTemp = -9999;
private double avgTemp = -9999;

public TempRead(){}

public TempRead(double latitude, double longitude, int year, int month, double maxTemp, double minTemp, double avgTemp){
    this.latitude = latitude;
    this.longitude = longitude;
    this.month = month;
    this.year = year;
    this.maxTemp = maxTemp;
    this.minTemp = minTemp;
    this.avgTemp = avgTemp;
}

public double getLatitude(){
    return latitude;
}

public double getLongitude(){
    return longitude;
}

public int getMonth(){
    return month;

}

public int getYear(){
    return year;
}

public double getMaxTemp(){
    return maxTemp;
}

public double getMinTemp(){
    return minTemp;
}

public double avgTemp(){
    return avgTemp;
}

@Override
public String toString(){
    return latitude + " " + longitude + " " + year + " " + month + " " + maxTemp + " " + minTemp + " " + avgTemp + " ";
}
System.out.println(t.get(0));

编辑:以下是我的主要内容:

public static void main(String[] args) {
    ArrayList<TempRead> t = new ArrayList();
    readFile(t);
    avgAllTemps(t);
}

public static void readFile(ArrayList<TempRead>t){
        try{
        String userFileName;
        Scanner in = new Scanner(System.in);
        System.out.println("Enter name of file: ");
        userFileName = in.next();
        System.out.println();

        Scanner file = new Scanner(new File(userFileName));

        while(file.hasNext()){
            t.add(new TempRead(file.nextDouble(), file.nextDouble(), file.nextInt(), file.nextInt(), file.nextDouble(), file.nextDouble(), file.nextDouble()));
        }
    }catch(IOException e){
        System.out.println(e);
    }
}

public static void avgTemps(ArrayList<TempRead>t){
    double totalMinTemp = 0.0;
    int count = 0;
    for (TempRead entry : t) {
        if (entry.getMinTemp() != -9999) {
            totalMinTemp += entry.getMinTemp();
            count++;
        }
        double avgMinTemp = totalMinTemp / count;
        System.out.println("Avg of min temps in arraylist: " + avgMinTemp);
    }
}

共有1个答案

鄢英哲
2023-03-14

在查找温度时,不应查找ArrayList的最后3个元素,而应查找ArrayList中每个元素内部的数据

从第一个入口获得温度:

TempRead entry = t.get(0);
double maxTemp = entry.getMaxTemp();
double minTemp = entry.getMinTemp();
double avgTemp = entry.avgTemp();
//do stuff

如果需要每个条目,请使用循环:

for(TempRead entry : t)
{
    double maxTemp = entry.getMaxTemp();
    double minTemp = entry.getMinTemp();
    double avgTemp = entry.avgTemp();
    //do stuff
}
double totalMinTemp = 0.0;
int count = 0;
for(TempRead entry : t)
    if(entry.getMinTemp() != -9999)
    {
        avgMinTemp += entry.getMinTemp();
        count++;
    }
double avgMinTemp = totalMinTemp / count;
double avgMinTemp = t.stream().filter(t -> t.getMinTemp() != -9999).collect(Collectors.averaging(TempRead::getMaxTemp‌​));
 类似资料:
  • 当产品存储在这个特定的单元格中时,我想稍后从这个特定的单元格中检索它。因此,我想通过给出输入行、位置和级别来使用rackPick块(或任何其他块)选择一个产品。 例如,我将产品A存储在第1行、位置20和级别2中。我想从这个特定的细胞中挑选产品。我怎样才能做到这一点?

  • 我用Java编写了一个程序,我有以下问题: 在课程的后期,我再次需要这些学生。我可以这样做: 但是我没有学生的人数。有没有办法让他们的名字,这是在类学生?

  • 我有一个JSON如下 有没有什么方法可以直接将“ID”的值提取到变量中,而不需要遍历根元素,即“Root1”。因为每次运行应用程序时根元素名称都会发生变化,比如“Root2”、“Root3”。 下面是我尝试使用“Root1”和“Result”元素提取ID的代码

  • 问题内容: 我正在使用,我想删除所有出现的特定元素。 它仅删除第一次出现的事件。但是我希望所有列表都被删除,因为我希望列表仅保留值“ second”。通过谷歌搜索发现,可以通过创建新列表并调用来实现。但是是否可以在不创建新列表的情况下删除所有出现的内容,或者是否有可用的API来实现它? 问题答案: