我有一个自定义对象数组CustomClass [] customArr,其中CustomClass就像
Class CustomClass{
private String key;
private String value;
//getter & setters
}
现在我想通过一个特定的值来搜索这个数组。最好的方法是什么?
答案 0 :(得分:5)
实施equals()
。确保您遵守方法的合同。
此外,如果您经常搜索并且数组很大,您可能需要考虑更好的数据结构,例如: Set
的一个实现,如果您对数据结构中的特定实例或Map
的某个实现感兴趣,如果您想通过键搜索。有关详细信息,请参阅java.util
。
请注意java.util
中的某些数据结构可能要求您提供自己的hashCode()
版本(例如HashSet
),有些可能要求您实施Comparable
界面或提供Comparator
(例如TreeSet
)。
如果您提供自己的hashCode()
版本,请确保其与equals()
一致(请参阅equals()
的javadoc)。
如果您真的必须使用数组,请考虑Arrays.binarySearch()
的其中一个版本。请注意,您只能在已排序的数组上使用它。
答案 1 :(得分:0)
实施可比较。然后,您可以使用java.util.Arrays
来搜索和排序数组。
Class CustomClass implements Comparable {
private String key;
private String value;
//getter & setters
public int compareTo(Object other){
if( other instanceOf CustomClass )
{
CustomClass otherCustomClass = (CustomClass) other;
int val = this.key.compareTo( otherCustomClass.key );
if( key != 0 ) return key;
return this.value.compareTo( otherCustomClass.value );
}
return -1;
}
}