Java equivalente de c ++ equal_range (o lower_bound y upper_bound)

Tengo una lista de objetos ordenados y quiero encontrar la primera aparición y la última aparición de un objeto. En C ++, puedo usar fácilmente std :: equal_range (o solo uno lower_bound y uno upper_bound).

Por ejemplo:

bool mygreater (int i,int j) { return (i>j); }

int main () {
  int myints[] = {10,20,30,30,20,10,10,20};
  std::vector<int> v(myints,myints+8);                         // 10 20 30 30 20 10 10 20
  std::pair<std::vector<int>::iterator,std::vector<int>::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, parece que no hay equivalencia simple? ¿Cómo debo hacer con el rango igual con

List<MyClass> myList;

Por cierto, estoy usando una importación estándar java.util.List;

Respuestas a la pregunta(5)

Su respuesta a la pregunta