如何在没有克隆的情况下从 ArrayList 获取唯一元素
How to get unique elements from ArrayList without clone
我正在尝试从另一个具有重复元素的 ListArrayB 制作一个唯一的 ListArrayA。 ListArrayA 和 ListArrayB 是单独定义的。列表 B 已经填满了数据,其中包含大约 10000 个整数。
我创建了一个名为 unique() 的函数并使用了以下逻辑。而运行这个逻辑,程序是永无止境的。我想知道这是非常简单和小的逻辑,但这仍然不起作用。静态声明有问题吗?
基本上,我想从 ListB 创建一个新的 Array/ArrayList,这样我在列表 A 中就有了独特的元素。我不想丢失列表 B。我想保持列表 B 不变。
我该怎么做?我听说克隆另一个列表,然后进行基本搜索以创建一个新列表。我不克隆(复制)以保持效率。
我也听说过HashSet。但我不想克隆列表 B 的副本,也不想丢失列表 B 的内容。 [清单 B 应保持原样]。我怎样才能实现它?
static ArrayList<Integer> a = new ArrayList<Integer>();
static ArrayList<Integer> b = new ArrayList<Integer>();
function unique(){
a.add(b.get(0));
for(int i=1;i<b.size();i++){
for(int m=0;m<a.size();m++){
if(b.get(i)!=a.get(m)){
a.add(b.get(i));
}
}
}
}
我想到的 HashSet 的代码。但是我无法从中访问元素。
static Set<Integer> uniqueElem;
然后在函数调用中我用以下命令初始化它:
uniqueElem = new HashSet<Integer>(b);
请帮忙!提前致谢!
这样可以吗?
ArrayList<Integer> a = new ArrayList<>(new HashSet<>(b));
请记住,您没有很好地解释您的问题或约束条件。
您可以在 O(n) 时间内找到列表中的唯一元素,方法是逐步遍历列表,并将存在的元素添加到 HashMap
。它可以是 HashMap<Integer,Integer>
,第二个值是该值出现的次数,如果你关心的话。
构建 HashMap
后,您可以通过 HashMap.get(Integer value)
查询 "does this element exist" 问题,这将 return null
,如果答案是"no."
或者,如果您只想查看这些值是什么,请通过 HashMap.keySet()
打印出键集 return。
我正在尝试从另一个具有重复元素的
我创建了一个名为 unique() 的函数并使用了以下逻辑。而运行这个逻辑,程序是永无止境的。我想知道这是非常简单和小的逻辑,但这仍然不起作用。静态声明有问题吗?
基本上,我想从 ListB 创建一个新的 Array/ArrayList,这样我在列表 A 中就有了独特的元素。我不想丢失列表 B。我想保持列表 B 不变。
我该怎么做?我听说克隆另一个列表,然后进行基本搜索以创建一个新列表。我不克隆(复制)以保持效率。
我也听说过HashSet。但我不想克隆列表 B 的副本,也不想丢失列表 B 的内容。 [清单 B 应保持原样]。我怎样才能实现它?
static ArrayList<Integer> a = new ArrayList<Integer>();
static ArrayList<Integer> b = new ArrayList<Integer>();
function unique(){
a.add(b.get(0));
for(int i=1;i<b.size();i++){
for(int m=0;m<a.size();m++){
if(b.get(i)!=a.get(m)){
a.add(b.get(i));
}
}
}
}
我想到的 HashSet 的代码。但是我无法从中访问元素。
static Set<Integer> uniqueElem;
然后在函数调用中我用以下命令初始化它:
uniqueElem = new HashSet<Integer>(b);
请帮忙!提前致谢!
这样可以吗?
ArrayList<Integer> a = new ArrayList<>(new HashSet<>(b));
请记住,您没有很好地解释您的问题或约束条件。
您可以在 O(n) 时间内找到列表中的唯一元素,方法是逐步遍历列表,并将存在的元素添加到 HashMap
。它可以是 HashMap<Integer,Integer>
,第二个值是该值出现的次数,如果你关心的话。
构建 HashMap
后,您可以通过 HashMap.get(Integer value)
查询 "does this element exist" 问题,这将 return null
,如果答案是"no."
或者,如果您只想查看这些值是什么,请通过 HashMap.keySet()
打印出键集 return。