[英]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.