2010-10-28 16 views
2

Je voudrais faire ce qui suit en Java: J'ai un élément, et j'aimerais savoir quel serait son index s'il avait été inséré dans un collection d'autres objets (étant donné qu'ils sont déjà triés). Donc, si j'ai un vecteur d'ints comme celui-ci: 1,3,5,7,9 et que j'avais l'int '2' en main, je saurais que son index 'would-be' est i = 1, entre les valeurs 1 et 3.Java Vector: Comment trouver le futur index d'un article

Répondre

5
// assumes vector is sorted 
// and that vector does not yet contain searchedObject 
insertionPoint = -1 * Collections.binarySearch(vector,searchedObject) - 1; 

Définition des états Collections.binarySearch()

Retours:

index de la clé de recherche, si elle est contenue dans la liste; sinon, (- (point d'insertion) - 1). Le point d'insertion est défini comme le point d'insertion de la clé dans la liste: l'index du premier élément supérieur à la clé ou list.size() si tous les éléments de la liste sont inférieurs à la clé spécifiée. Notez que cela garantit que la valeur de retour sera> = 0 si et seulement si la clé est trouvée.

+2

Notez que binarySearch() renvoie "(- (point d'insertion) - 1)" dans le cas où l'objet n'existe pas dans la liste. Cela signifie que vous devrez ajouter 1 à la valeur de retour et l'annuler pour trouver le point d'insertion. http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#binarySearch%28java.util.List,%20T%29 – fizban

+0

Je dois préciser que le vecteur est trié dans un ordre croissant. Est-ce que cela signifie que le comportement est toujours le même ou dois-je compter aussi pour cela? – Orca

+0

Merci. J'ai corrigé le post. Je me suis précipité pour atteindre le premier poste;) –