我有ValueA和ValueB的數組(int
類型)。我正在使用for
循環讀取陣列中的每個值。 我想連接一個字符串中的所有值。這些值應該在這樣的連接的整數由Pipe分隔的值和':'使用java
ValueA1":"valueB1"|"ValueA2":"valueB2"|"ValueA3":"valueB3"|"ValueA4":"valueB4"|"....
我想這在Java中的表格,請一些能夠幫助東北我的代碼..
我有ValueA和ValueB的數組(int
類型)。我正在使用for
循環讀取陣列中的每個值。 我想連接一個字符串中的所有值。這些值應該在這樣的連接的整數由Pipe分隔的值和':'使用java
ValueA1":"valueB1"|"ValueA2":"valueB2"|"ValueA3":"valueB3"|"ValueA4":"valueB4"|"....
我想這在Java中的表格,請一些能夠幫助東北我的代碼..
你可以嘗試這樣的事情
int[] valueA = methodWhichFillsA();
int[] valueB = methodWhichFillsB();
StringBuilder sb = new StringBuilder();
int maxSize = Math.max(valueA.length, valueB.length);
for(int i = 0; i < maxSize; i++){
if(i > 0)
sb.append("|");
if(i < valueA.length)
sb.append(valueA[i]);
sb.append(":");
if(i < valueB.length)
sb.append(valueB[i]);
}
System.out.println(sb.toString());
這將評估valueA和valueB之間的最大數組的大小,在此大小上循環。如果元素存在,則打印它。 第一個if用於添加分隔符,如果是第一次迭代,則不需要「|」
感謝您的回覆。你是男人... – Salman 2010-08-22 20:35:47
假設陣列是不同大小的,這種解決方案會一起壓縮它們,直到短數組的末尾:
StringBuilder sb = new StringBuilder();
for(int i = 0; i < Math.min(arr1.length, arr2.length); i++){
sb.append(arr1[i]).append("\":\"").append(arr2[i]).append("\"|\"");
}
System.out.println(sb.toString());
這兩個數組都有相等的長度..謝謝你的答覆seanizer你的答案 – Salman 2010-08-22 20:37:41
只是做的一種不同的方式,這裏採用番石榴
private String test(int[] a, int[] b) {
List<Integer> al = Lists.newArrayList();
List<Integer> bl = Lists.newArrayList();
for (Integer ai : a) {
al.add(ai);
}
for (Integer bi : b) {
bl.add(bi);
}
List<String> sets = Lists.newArrayList();
Iterator<Integer> itera = al.iterator();
Iterator<Integer> iterb = bl.iterator();
while(itera.hasNext() && iterb.hasNext()) {
sets.add(itera.next()+":"+iterb.next());
}
return Joiner.on("|").join(sets);
}
我很驚訝地發現沒有原始數組來列出方法。如果你能想到一個優雅的方式來做到這一點,除了把它拉出來另一種方法,這個代碼可以變得更清潔。
a)陣列的長度是否相等b)如果不是,我們應該怎樣處理一個陣列的較長部分 – 2010-08-22 17:31:44