2012-08-28 37 views
2

我希望有人能幫我解決一個我在java中遇到的小問題。我有一個List和一個ArrayList,我想輸出到一個文件中,每個文件的第一個元素相互印刷。以下是我迄今爲止:Java print列表和arraylist

List<String> uniqueList = new ArrayList<String>(dupMap.values()); 
for(String unique:uniqueList){ 
    out.write(unique + "\r"); 
} 
ArrayList<Integer>subtr=new ArrayList<Integer>(); 
out.write("The number: " + subtr + "\r"); 

這導致了這個輸出:

A 
B 
C 
D 
E 
F 
The number: [1, 2, 3, 4, 5, 6] 

但我寧願它是這樣的:

A The number: 1 
B The number: 2 

...等。

我不知道從哪裏開始如何獲得輸出格式。我試着將兩組值都放到數組中,但我最終只是把自己弄糊塗了......我是如何在這裏結束的。任何幫助將超級讚賞。

+0

......你確定'\ r'是對的嗎? – oldrinb

回答

6

只要做到這一點:

String br = System.getProperty("line.separator"); 
for (int i = 0, n = Math.min(uniqueList.size(), subtr.size()); i < n; i++) 
    out.write(uniqueList.get(i) + " The number: " + subtr.get(i) + br); 
+0

謝謝!我認爲它不會太複雜,但我一直迷路。你介意解釋Math.min(),因爲它在這裏用於我? – Stephopolis

+3

@用戶當然!如果其中一個列表比另一個列表長,這只是一種保護措施,這樣我們就不會嘗試訪問較短列表之外的索引。如果兩個列表保證始終具有相同的大小,那麼'n = uniqueList.size()'就足夠了。 –

+1

再次感謝!它很棒! – Stephopolis

1
List<String> uniqueList = new ArrayList<String>(dupMap.values()); 
ArrayList<Integer>subtr=new ArrayList<Integer>(); 

for (int i = 0; i < uniqueList.size(); i++){ 
    out.write(uniqueList.get(i) + "\r"); 
    out.write("The number: " + subtr.get(i) + "\n"); 
} 

注意:這假定兩個列表有相同數目的元素。如果他們不是,你會迭代到Math.min(uniqueList.size(), subtr.size())

+0

這會給你一個例外,如果'subtr.length() Baz

+0

@Baz是的。但是這個問題假設他們有相同數量的元素。 – 2012-08-28 19:09:01

+0

雖然最有可能的,我沒有看到問題中的任何內容,說... – Baz

1

這應做到:

int maxLength = Math.min(uniqueList.size(), subtr.size()); 
for(int i = 0; i < maxLength; i++) 
{ 
    out.print(uniqueList.get(i) + " The number: " + subtr.get(i) + "\r"); 
} 
+0

你應該刪除'「\ r」'並用新行或'println'替換。 – 2012-08-28 19:17:06

+0

@Desolator你能解釋一下爲什麼嗎? – Baz

+0

某些環境不接受'\ r'作爲新的行說明符,'\ r'是回車符,而不是新行。它將被替換爲\ n。然而,最重要的是,使用'println'是最便攜的。 – 2012-08-28 19:23:46

1

事情是這樣的:

List<String> uniqueList = new ArrayList<String>(dupMap.values()); 
ArrayList<Integer> subtr = new ArrayList<Integer>(); 
int length = Math.min(uniqueList.size(), substr.size()); 
for (int i = 0; i < length; i++) { 
    out.write(uniqueList.get(i) + " The number: " + substr.get(i) + "\r"); 
} 
1

的有效方法是保持HashMapuniqueList作爲鍵和subtr作爲值。然後遍歷地圖。

Map<String,Integer> map = new HashMap<String,Integer>(); 

for (int i = 0; i < uniqueList.size(); i++){ 
    map.put(key, subtr.get(i)); 
} 
for (Map.Entry<String, Integer> entry : map.entrySet()) { 
    out.println(entry.getKey() + " The Number : " + entry.getValue()); 
}