fork download
  1. import java.util.Comparator;
  2. import java.util.List;
  3. import java.util.stream.Collectors;
  4. import java.util.stream.Stream;
  5.  
  6. class Ideone {
  7. public static void main (String[] args) {
  8. final AtoBConverter converter = new AtoBConverter();
  9. final List<B> bs = Stream.<A>of(new B(), new B(), new B(), new A())
  10. .map(converter::convert)
  11. .sorted(Comparator.comparingInt(B::getValue))
  12. .collect(Collectors.toList());
  13. System.out.println(bs);
  14. }
  15. }
  16.  
  17. class A {}
  18.  
  19. class B extends A {
  20. private static int globalValue = 5;
  21.  
  22. private int value;
  23.  
  24. public B() {
  25. value = globalValue--;
  26. }
  27.  
  28. public B(final int value) {
  29. this.value = value;
  30. }
  31.  
  32. public int getValue() {
  33. return value;
  34. }
  35.  
  36. @Override
  37. public String toString() {
  38. return String.format("B={value: %s}", getValue());
  39. }
  40. }
  41.  
  42. class AtoBConverter {
  43. public B convert(final A a) {
  44. if (a instanceof B) {
  45. return (B) a;
  46. }
  47. return new B(Integer.MIN_VALUE);
  48. }
  49. }
Success #stdin #stdout 0.08s 34704KB
stdin
Standard input is empty
stdout
[B={value: -2147483648}, B={value: 3}, B={value: 4}, B={value: 5}]