我有以下决策表:
我的任务是使用选择的属性集(例如{距离,容量})比较所有对象(S1,S2,S3 ...)。所以要实现这一点,我必须创建两个LOOPS(一个嵌套)并使用IF条件。
当对象设置很小时,一切正常。但是当设置很大(例如10000个对象)时,这个解决方案的性能会越来越差......
这是另一种,更快,更聪明的方式吗?
答案 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))