java - 使用泛型在java上查找重复项
问题描述
我是泛型新手,我想使用泛型查找重复数据。所以,我尝试这样:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class RemoveDuplicate {
public static void main(String[] args) {
Integer[] i= {12,12,12,12,5,2,42,4,2,5,3,35,3,1,23,54,44};
removeDuplicates(i);
}
public static <T extends Number> T[] removeDuplicates(T[] list) {
Map<T,Integer> duplicateCounr=new HashMap<T,Integer>();
for(T t:list) {
Integer x=duplicateCounr.get(t);
if(x==null) {
duplicateCounr.put(t,1);
}
else {
Integer count=duplicateCounr.get(t);
duplicateCounr.put(t,++count);
}
}
List<? extends Number> nList=new ArrayList<>();
for (Map.Entry<T, Integer> entry : duplicateCounr.entrySet()) {
T key = entry.getKey();
Integer v = entry.getValue();
if(v>1) {
nList.add(key);
System.out.println("Duplicate" + key + ", Count: " + v);
}
}
return null;
}
}
我在收到错误nList.add(key);
。因为,我只会传递 double、float、int 值,所以我声明List<? extends Number> nList=new ArrayList<>();
了。为什么没有在其中插入重复的数据nList
?
解决方案
您不能添加到这种类型的列表中,因为您不知道要传递什么类型的对象。
List<? extends Number> nList=new ArrayList<>();
相反,您可以使用
List<T> nList=new ArrayList<>();
推荐阅读
- python - 支持向量回归:“方法”对象不可下标
- google-apps-script - 在一个新的谷歌工作表插件中不断加载
- swift - 如何处理 Swift 中的特殊 URL 字符?
- reactjs - react native 如何通过“抽屉”传递信息
- javascript - 如何在 Material UI 版本 5 中配置 RTL(从右到左)支持
- database - dolphindb 是否有开发计划支持嵌入列表作为表中的列?
- html - Jquery 选项卡菜单 cookie
- jconsole - 为什么我在尝试使用 jconsole 远程连接时收到 Unsupported protocol:remote+http 错误
- python - 规范化 json 但保持 id 从顶层 -
- openlayers - OpenLayers 6:地图渲染不会在缩放时发生