簡體   English   中英

如何將 map ArrayList 元素與特定值然后打印

[英]How to map ArrayList elements with specific values and then print it

ArrayList<Integer> companiesId = new ArrayList<>();
int numberOfCompanies = 10; // Just for example
...
float profit;
Scanner input = new Scanner(System.in);

for(int i = 0; i < numberOfCompanies; i++) {
   int companyId = input.nextInt();

        if (!companiesId.contains(companyId)) {
            companiesId.add(companyId);
        }

        if (companiesId.get(i) == 1) {
            profit = 1000; 
        } else if (companiesId.get(i) == 2) {
            profit = 2000;
          }
 }

現在我想打印 ArrayList 中的所有 companyId,並為每個 id 輸入利潤,但我不知道如何使用 ArrayList 來完成。

它應該是:

1 1000
2 2000
... 

   

您無法按照您的要求去做,因為您需要打印的部分信息(利潤)丟失了。 您首先需要做的是創建一個包含公司 ID 和利潤的 class。 使用新版本的 Java,您可以創建將保存此類信息的record Java 記錄只不過是一個用該新關鍵字(記錄)標識的 POJO,並且不需要您創建所有樣板代碼。 您的記錄 class 將如下所示:

public record CompanyRecord(int companyID, float profit) {
}

您甚至不需要覆蓋toString() 也就是說,除非您想以與默認方式不同的方式打印記錄的內容。 然后,您將需要創建CompanyRecord對象列表:

ArrayList<CompanyRecord> companies = new ArrayList<>();

然后,您可以做任何您需要的事情。 例如,我創建了這個簡單的演示,它創建了一個包含 10 條公司記錄的列表,並使用循環計數器來設置公司 ID 並作為利潤的乘數。 最后,它將記錄打印到控制台。

public class CompanyRecordDemo {
    public static void main(String[] args) {
        ArrayList<CompanyRecord> companies = new ArrayList<>();
        float profit = 1000.0f;
        for (int i = 1; i <= 10; i++) {
            CompanyRecord rec = new CompanyRecord(i, profit * i);
            companies.add(rec);
            System.out.println(rec);
        }
        // do whatever you need with the list...
    }
}

這個小程序的output是:

CompanyRecord[companyID=1, profit=1000.0]
CompanyRecord[companyID=2, profit=2000.0]
CompanyRecord[companyID=3, profit=3000.0]
CompanyRecord[companyID=4, profit=4000.0]
CompanyRecord[companyID=5, profit=5000.0]
CompanyRecord[companyID=6, profit=6000.0]
CompanyRecord[companyID=7, profit=7000.0]
CompanyRecord[companyID=8, profit=8000.0]
CompanyRecord[companyID=9, profit=9000.0]
CompanyRecord[companyID=10, profit=10000.0]

這可能是完成您需要的最簡單的方法。 您需要使用 Java 14 或更高版本才能使用 Java 記錄,但我建議您使用最新版本。

更新:需要注意的一件重要事情是 Java 記錄是不可變的。 因此,它們沒有設置器(mutator 方法)。 您必須通過構造函數設置值,之后不能更改值。 您可以通過調用與字段同名的方法來訪問(獲取)屬性值。 例如,獲取profit的 getter 方法是profit() 例如rec.profit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM