Sch*_*lle 2 java arrays algorithm
给定排序的对象数组,而顺序基于某些对象属性.(使用Collections.sort()通过List与自定义Comparator进行排序,然后调用toArray()).
不允许SomeObject的重复实例(在这方面"重复"取决于SomeObject中的多个属性值),但SomeObject的多个实例可能具有相同的attribute1值,用于排序.
public SomeObject {
public attribute1;
public attribute2;
}
List<SomeObject> list = ...
Collections.sort(list, new Comparator<SomeObject>() {
@Override
public int compare(SomeObject v1, SomeObject v2) {
if (v1.attribute1 > v2.attribute1) {
return 1;
} else if (v1.attribute1 < v2.attribute1) {
return -1;
} else
return 0;
}
});
SomeObject[] array = list.toArray(new SomeObject[0]);
Run Code Online (Sandbox Code Playgroud)
如何有效地检查基于某个属性的某个对象是否在该数组中,同时还能够"标记"在先前查找中已经找到的对象(例如,只需从数组中删除它们;已经找到的对象不需要稍后访问).
如果没有后面的要求,可以使用自定义Comparator执行Arrays.binarySearch().但显然当想要删除已找到的对象时,它不起作用.