Encontrar el valor medio de una Lista de objetos usando Java 8

Puedes utilizar

List<Person> list = company.getPerson();
DoubleStream sortedAges = list.stream().mapToDouble(Person::getAge).sorted();
double median = list.size()%2 == 0?
    sortedAges.skip(list.size()/2-1).limit(2).average().getAsDouble():        
    sortedAges.skip(list.size()/2).findFirst().getAsDouble();

La ventaja de este enfoque es que no modifica la lista y, por lo tanto, tampoco depende de su mutabilidad. Sin embargo, no es necesariamente la solución más simple.

Si tiene la opción de modificar la lista, puede usar

List<Person> list = company.getPerson();
list.sort(Comparator.comparingDouble(Person::getAge));
double median = list.get(list.size()/2).getAge();
if(list.size()%2 == 0) median = (median + list.get(list.size()/2-1).getAge()) / 2;

en lugar.

Respuesta 1

Estoy tratando de convertir la gramática ANTLR3 de ant a una gramática ANTLR4, para usarlo con el tiempo de ejecución antlr4-python2. Esta gramática es un analizador difuso C / C ++. Después de convertirlo (básicamente eliminando el árbol ...

Estoy tratando de convertir TextView en una cadena y no estoy seguro si voy a hacerlo de la manera correcta, a continuación se muestra el código que pensé que funcionaría, pero sigo recibiendo errores. TextView test1 = (TextView) ...

Siento que este es un problema simple, pero ninguna de las cosas que intenté funciona para mí. Tengo una enumeración, la razón por la que tengo un constructor de cadenas es porque Java no permite que la enumeración sea numérica ... Intenté AA, ...

Me gustaría agregar algunas afirmaciones personalizadas a nuestra base de código que se esconden correctamente del seguimiento de fallas. Sé cómo escribir un método estático público que alguien pueda importar estáticamente. Sé reutilizar ...