我有两个枚举列表。我想在另一个中从List中搜索字符串值。
public class AzureFileModel {
public String imageName;
public String classifierClass ="";
public double score;
}
public class WatsonFileModel {
public String imageName;
public String classifierClass ="";
public double score;
}
private List<WatsonFileModel> watsonFileModelList = new ArrayList<>();
private List<AzureFileModel> azureFileModelList = new ArrayList<>();
如何以有效的方式比较两个相同图像名称的列表?
当前方法
我有一个列表,列出了每个列表中的所有图像名称,我通过迭代一个列表来检查图像名称是否与另一个匹配。
示例数据
AzureFileModelList
{
[imagename=image1,class=football,score=9.87],
[imagename=image2,class=tennis,score=9.7],
[imagename=image1,class=tennis,score=0.87] //chances of same imagename
[imagename=image3,class=football,score=9.87],
}
WatsonFileModelList
{
[imagename=image1,class=football,score=5.6],
[imagename=image2,class=football,score=9.7],
[imagename=image4,class=tennis,score=0.87]
}
最终结果
CombinedModelList{
[imagename=image1,azureclass=football,azurescore=9.87,watsonclass=football, watsonscore =5.6],
[imagename=image2,azureclass=tennis,azurescore=9.7,watsonclass=football,watsonscore=9.7]
}
答案 0 :(得分:2)
为什么你需要两个具有完全相同字段的类?
同时成为一个班级。然后将Azure或Watson数据的实例存储在一个列表中
如果您需要在类中有所不同,则可以使用公共字段的抽象类
如果要比较对象,可能需要尝试实现Comparable接口
比较图像需要读取二进制数据,而不仅仅是文件名
答案 1 :(得分:0)
您可以使用Map
代替List
,并指定代表String
的关键imageName
。
Map
检索速度很快。
请注意,将父类引入这两个类以便以统一的方式操作它们也是一件好事:
Map<String, FileModel> fileModelsByImageName;
如果元素插入的顺序很重要,您可以实例化LinkedHashMap
否则,HashMap
就足够了。