-4

我有一个数组列表:

ArrayList<Integer> example = new ArrayList<Integer>();
example.add(1);
example.add(1);
example.add(2);
example.add(3);
example.add(3);

所以我想让其他三个 ArrayLists 包含其中一个相同的值(其中只有一个值 ArrayList 将只有一个)。

那可能吗?

4

1 回答 1

0

这是一种过滤掉元素的方法,已实现:使用泛型 Map(在泛型类中)来封装值。

  • 键是我们想要的对象,值确定如下:
    • 如果键不存在,我们有一个最多包含一个元素的列表,它与键相同;
    • 如果 key 之前已经存在,我们有一个至少包含一个元素的列表,它与 key 相同。

这是它的布局方式。您使用要拆分的对象类型对其进行实例化。

public class UniqueSplitter<T> {

    public Map<T, List<T>> filterOutElements(final List<?> theCandidateList) {
        final Map<T, List<T>> candidateMap = new HashMap<>();
        for(Object element : theCandidateList) {
            if(candidateMap.containsKey(element)) {
                candidateMap.get(element).add((T) element);
            } else {
                final List<T> elementList = new ArrayList<>();
                elementList.add((T) element);
                candidateMap.put((T)element, elementList);
            }
        }
        return candidateMap;
    }
}
于 2013-07-24T05:31:58.010 回答