bho*_*use 2 java algorithm list data-structures
我有一个我在屏幕上显示的对象列表.用户可以根据需要更改它们,然后点击提交.在提交方法中,我将获取我存储的原始列表和当前列表,并进行比较.我必须创建第三个列表,其中包含使用操作代码添加,删除或更改的所有对象,以指定它是什么.对象具有标识它们的id,默认为0.
我怎样才能做到这一点?这是我能想到的最好的(伪代码),但它似乎很草率.
for (currentObject : objects in current list)
if (currentObject.id is 0)
//Was added
for (oldObject : objects in original list)
if (currentObject.id == oldObject.id)
//Existed - compare other fields to see if changed
for (oldObject1 : objects in original list)
boolean existed = false;
for (currentObject1 : objects in current list)
if(oldObject1.id == currentObject1.id)
existed=true;
if (!existed)
//Was removed
Run Code Online (Sandbox Code Playgroud)
如果排序无关紧要,您关心的是元素是否已添加或删除,您可能需要考虑更改数据结构并使用Set
而不是List
.该Set
类型专门用于确定元素是否存在并且有效地执行此操作,代价是您不再记住元素的顺序.
例如,使用HashSet
,您可以执行以下操作:
Set<T> oldElems = new HashSet<T>(originalList);
Set<T> newElems = new HashSet<T>(currentList);
for (T obj : oldElems) {
if (!newElems.contains(obj)) {
/* ... this object was removed ... */
}
}
for (T obj : newElems) {
if (!oldElems.contains(obj)) {
/* ... this object was added ... */
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!