J'ai une liste d'objets triée et je veux trouver la première occurrence et la dernière occurrence d'un objet. En C++, je peux facilement utiliser std::equal_range (ou juste une lower_bound et une upper_bound).
Par exemple:
bool mygreater (int i,int j) { return (i>j); }
int main () {
int myints[] = {10,20,30,30,20,10,10,20};
std::vector v(myints,myints+8); // 10 20 30 30 20 10 10 20
std::pair::iterator,std::vector::iterator> bounds;
// using default comparison:
std::sort (v.begin(), v.end()); // 10 10 10 20 20 20 30 30
bounds=std::equal_range (v.begin(), v.end(), 20); // ^ ^
// using "mygreater" as comp:
std::sort (v.begin(), v.end(), mygreater); // 30 30 20 20 20 10 10 10
bounds=std::equal_range (v.begin(), v.end(), 20, mygreater); // ^ ^
std::cout << "bounds at positions " << (bounds.first - v.begin());
std::cout << " and " << (bounds.second - v.begin()) << '\n';
return 0;
}
En Java, il semble ne pas y avoir d'équivalence simple? Comment devrais-je faire avec l'égalité range avec
List myList;
Au fait, j'utilise une importation standard java.util.List;