※ 引述《swpoker (swpoker)》之銘言:
: ※ 引述《sunsam777 (行善為樂)》之銘言:
: : 數列一 整數陣列 值 1 2 3 4 5
: : 數列二 整數陣列 值 3 5
: : 要印出 數列二沒有的 1 2 4
: : 請問該如何做呢?
: : 我能想到的大概就是用兩個for迴圈
: : 大概這樣,倆倆互相比對,共比10次 但要怎樣才能印出1 2 4呢
: : 想了很久想不出來,可否指點下? 感謝不盡
: import java.util.*;
: public class Test{
: public static void main(String [] arg){
: System.out.println(Arrays.asList(Arrays.asList(1,2,3,4,5).stream().filter(x -> Arrays.asList(3,5).indexOf(x) < 0 ).toArray()));
: }
: }
: Result:
: [1, 2, 4]
: java 8 真的好用!!!
問題不是太清楚,要是 [1,2,3] 和 [3,4,5] 的話,你要結果是 [1,2,4,5] 嗎?
是的話 Java5-7, 用 Guava 的話:
Set<Integer> result = Sets.difference(Sets.newHashSet(1,2,3,4,5),
Sets.newHashSet(3,5));
如果結果是想要 [1,2],就乾脆
Set<Integer> result = Sets.newHashSet(1,2,3,4,5);
result.removeAll(Arrays.asList(1,2,4));
就好了