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 中的所有 companyIds,并為每個 id 輸入利潤,但我不知道如何使用 ArrayList 來執行此操作。
它應該是:
1 1000
2 2000
...
uj5u.com熱心網友回復:
你不能按你的要求去做,因為你需要列印的部分資訊(利潤)丟失了。您首先需要做的是創建一個包含公司 ID 和利潤的類。使用新版本的 Java,您可以創建一個record將保存此類資訊的檔案。Java 記錄只不過是用新關鍵字(記錄)標識的 POJO,不需要您創建所有樣板代碼。您的記錄類將如下所示:
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...
}
}
這個小程式的輸出是:
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 Records,但我建議您使用最新版本。
更新:需要注意的一件重要事情是 Java 記錄是不可變的。因此,它們沒有設定器(mutator 方法)。您必須通過建構式設定值,之后無法更改值。您可以通過呼叫與欄位同名的方法來訪問(獲取)屬性值。例如,getter 方法profit是profit()。例如rec.profit()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/367553.html
上一篇:自動為資料框串列創建新列-R
