a = [1,3,5,7,9,3]
b = [2,1,7,9,5,1]
a[5]
& b[5]
重复a[1]
& b[1]
。有没有办法从两个数组中删除所有重复的对?任何帮助都会很棒。
答案 0 :(得分:0)
没有简单的方法可以做到这一点:
Set
(无重复)对(a
中的一个值,b
中的一个值) public static void main(String[] args) {
int[] a = new int[]{1, 3, 5, 7, 9, 3};
int[] b = new int[]{2, 1, 7, 9, 5, 1};
Set<Pair<Integer, Integer>> set = new LinkedHashSet<>();
for (int i = 0; i < b.length; i++) {
set.add(new Pair<>(a[i], b[i]));
}
a = new int[set.size()];
b = new int[set.size()];
int i = 0;
for (Pair<Integer, Integer> pair : set) {
a[i] = pair.getKey();
b[i] = pair.getValue();
i++;
}
}
答案 1 :(得分:0)
这可能是可以优化的,但这很好。 这只会删除副本,并保留原件。
Integer[] a = {1,3,5,7,9,3};
Integer[] b = {2,1,7,9,5,1};
ArrayList<Integer> al = new ArrayList<Integer>();
al.addAll(Arrays.asList(a));
ArrayList<Integer> bl = new ArrayList<Integer>();
bl.addAll(Arrays.asList(b));
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
int i = 0;
while( i < al.size() -1 ){
map.put(al.get(i),bl.get(i));
i++;
}
int y = map.size();
Integer[] af = map.keySet().toArray(new Integer[y]);
Integer[] bf = map.values().toArray(new Integer[y]);
System.out.println((Arrays.asList(af)).toString());
//Output : [1, 3, 5, 7, 9]
System.out.println((Arrays.asList(bf)).toString());
//Output : [2, 1, 7, 9, 5]