Java - 获取ArrayList的最大值和最小值

时间:2016-11-20 14:21:15

标签: java arraylist javafx

我有一个Java程序,最多存储10个名称(字符串)和年龄(整数)的arrayList项目,程序最多接受10个项目,除非用户输入' done'或者' DONE'然后输出数组的项目。

在数组输出之后,我现在希望程序输出数组中最年轻和最老的成员。

我似乎无法弄清楚如何获取此数据并显示它。

有什么建议吗?

谢谢。

import java.util.Scanner;
import javafx.util.Pair;
import java.util.ArrayList;
import java.util.List;

public class AgeName {
    public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

        List<Pair<String, Integer>> names = new ArrayList<>();

        for (int i = 0; i < 10; i++) {
            System.out.print("Enter name " + (i + 1) + ": ");
            String line = input.nextLine();

            if (line.toUpperCase().equals("DONE"))    
                break;

                System.out.print("Enter age for user " + line + ": ");
                Integer age = Integer.parseInt(input.nextLine());

                names.add(new Pair<String, Integer>(line, age));
        }
            System.out.print("\n");
            System.out.print("Names are: " + names );
    }
}

1 个答案:

答案 0 :(得分:0)

只需添加两个变量即可保存这些信息:

   Pair<String, Integer> minPair = null;
   Pair<String, Integer> maxPair = null;

并在迭代中添加:

 if (minPair==null || pair.getValue() < minPair.getValue()){
           minPair  = pair;
 }
 if (maxPair==null || pair.getValue() > maxPair.getValue()){
           maxPair  = pair;
 }

这给出了:

public class AgeName {
    public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

        List<Pair<String, Integer>> names = new ArrayList<>();
          Pair<String, Integer> minPair = null;
          Pair<String, Integer> maxPair = null;

        for (int i = 0; i < 10; i++) {
            System.out.print("Enter name " + (i + 1) + ": ");
            String line = input.nextLine();

            if (line.toUpperCase().equals("DONE"))    
                break;

                System.out.print("Enter age for user " + line + ": ");
                Integer age = Integer.parseInt(input.nextLine());
                Pair<String, Integer> pair = new Pair<String, Integer>(line, age);
                names.add(pair);
                if (minPair==null || pair.getValue() < minPair.getValue()){
                   minPair  = pair;
                }
                if (maxPair==null || pair.getValue() > maxPair.getValue()){
                   maxPair  = pair;
                }
            }

          System.out.print("\n");
          System.out.println("Names are: " + names );
          System.out.println("min is: " + minPair.getKey());
          System.out.println("Max is: " + maxPair.getKey());
      }
    }