Java 如何在数组列表中按降序查找多个最大值的索引?

Java 如何在数组列表中按降序查找多个最大值的索引?,java,arrays,arraylist,max,Java,Arrays,Arraylist,Max,用户通过扫描程序输入在单独的类中提供两个数组列表的值,即客户名称和销售额。 用户还提供topN,这是他们希望看到的顶级客户的数量。 如果他们想要的顶级客户数大于数组列表中的客户数,那么我们应该打印所有客户,从销售排名靠前的客户到排名靠后的客户 我这里的问题是在资源类中,方法nameOfBestCustomers(int-topN)试图获取最大值的索引,但它按顺序打印数组列表的索引。我想读取所有值,按顺序查找max和所有较低的值,并获取这些值的索引,然后使用它打印数组列表字符串名称。示例:用户输入

用户通过扫描程序输入在单独的类中提供两个数组列表的值,即客户名称和销售额。 用户还提供topN,这是他们希望看到的顶级客户的数量。 如果他们想要的顶级客户数大于数组列表中的客户数,那么我们应该打印所有客户,从销售排名靠前的客户到排名靠后的客户

我这里的问题是在资源类中,方法nameOfBestCustomers(int-topN)试图获取最大值的索引,但它按顺序打印数组列表的索引。我想读取所有值,按顺序查找max和所有较低的值,并获取这些值的索引,然后使用它打印数组列表字符串名称。示例:用户输入值:销售2代表客户“a”,销售3代表客户“b”,销售4代表客户“c”。用户将topN的值设置为4,因此应根据销售值按此顺序打印所有顶级客户:c、b、A

你知道怎么做吗?提前谢谢

资源类

import java.util.*;          
public class P7_13
{

   String name;
   double price;
   
   private ArrayList<String> list;
   private ArrayList<Double> list2;

   public P7_13()
   {
      list = new ArrayList<String>(); //creates new arraylist objects
      list2 = new ArrayList<Double>();
   }
   
   public void addSale(String customerName, double amount)
   {
   
      name = customerName;
      price = amount;
            
      list.add(customerName); //adds names and prices to arraylists
      list2.add(amount);
          
   }
   
   public ArrayList<String> nameOfBestCustomers(int topN) //print topN customers method
   {
      double index = 0;
      int finalIndex = 0;
      double max = 0;
   
      
      if(topN > list.size())
      {
         for (int i = list.size(); i >= 0; i--) {
            if(list2.get(i) >= max) {
               max = list2.get(i);
               index = list2.indexOf(max);
               System.out.println(max);
               int index2 = (int)index;
                     //print all customers
               System.out.print("Top Customers: ");
               System.out.println(list.get(index2));
            }
         }
      }
      
      return list;
   
   }       

您可以尝试使用此数据结构来存储金额和CustomerName列表,然后按金额排序(配对键)
import java.util.*;

public class P7_13Tester
{

   public static void main (String args[])
   {
   
      Scanner input = new Scanner(System.in);
      
      P7_13 Customer = new P7_13(); //new object of P7_12 class
      String customer = "";
      
      boolean isPriceZero = false;
      
      while (!isPriceZero) {
      
         System.out.println("Please enter a sale and customer!");  //prompts user for customer name
         System.out.print("Sale: ");
         double amount = input.nextDouble();
         
         if(amount == 0) { //ends if sentinel value is entered
            isPriceZero = true;
            System.out.println("\nEnd of sales and persons!");
            System.out.println(Customer.nameOfBestCustomers(4)); //prints best customers, providing topN
            break;
         }
      
         System.out.print("Customer: "); //prompts user for customer name
         customer = input.next();
         
         Customer.addSale(customer,amount); //adds values and names to P7_12 object
                     
      }
   
      input.close(); //closes scanner
      
   }

}