Java - 比较算法的对象

时间:2015-11-16 19:51:12

标签: java algorithm dataset compare

我有以下决策表:

Decision table

我的任务是使用选择的属性集(例如{距离容量})比较所有对象(S1,S2,S3 ...)。所以要实现这一点,我必须创建两个LOOPS(一个嵌套)并使用IF条件。

当对象设置很小时,一切正常。但是当设置很大(例如10000个对象)时,这个解决方案的性能会越来越差......

这是另一种,更快,更聪明的方式吗?

1 个答案:

答案 0 :(得分:1)

伪代码:

步骤1. HashMap<String, ArrayList<String>> hashMap = new HashMap<>();
 第2步。为每个对象做

String key = getSelectedAttributesValueInString();
if (!hashMap.containsKey(key)) {
    hashMap.put(key, new ArrayList<String>());
}
hashMap.get(key).add(s.getName); 

此处getSelectedAttributesValueInString是所有选定属性值的串联。

例如:object s1 Attributes {Distance, Capacity}函数返回ShortYES

步骤3.现在打印长度大于1的hashMap arraylist值。

复杂性分析:

您的方法O(n ^ 2)

我的方法O(n)(因为HashMap添加并获得复杂性是O(1))

相关问题