我有一个自定义对象的ArrayList,它具有以下属性:
ArrayList的BinarySearch的语法是这样的;但是你如何为arraylist中的对象属性做这个呢?
public static void FindMyObject( ArrayList myList, Object myObject ) {
int myIndex=myList.BinarySearch( myObject );
if ( myIndex < 0 )
Console.WriteLine( "The object to search for ({0}) is not found. The next larger object is at index {1}.", myObject, ~myIndex );
else
Console.WriteLine( "The object to search for ({0}) is at index {1}.", myObject, myIndex );
}
答案 0 :(得分:2)
Areay.BinarySearch过载需要比较器(http://msdn.microsoft.com/en-us/library/4ba2bttb.aspx),但在这种情况下我只需切换到Dictionary<string,YourType>
,这听起来更合适:
答案 1 :(得分:1)
你应该实现comparer类,你应该使用特定的类类型而不仅仅是对象,例如我创建了一个C类并进行自定义搜索:
public class MyComparer : IComparer<C>
{
#region IComparer<C> Members
public int Compare(C x, C y)
{
return x.filename.CompareTo(y.filename);
}
#endregion
}
public class C
{
public string filename;
public string id;
}
并使用它:
List<C> aList = new List<C>();
aList.BinarySearch(myCObject, new MyComparer());