搜索java自定义对象的数组

时间:2012-02-07 17:09:21

标签: java

我有一个自定义对象数组CustomClass [] customArr,其中CustomClass就像

Class CustomClass{

private String key;
private String value;

//getter & setters

}

现在我想通过一个特定的值来搜索这个数组。最好的方法是什么?

2 个答案:

答案 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;
}

}