fork download
  1.  
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.List;
  5. import java.util.Random;
  6.  
  7. class Mebel implements Comparable<Mebel> {
  8.  
  9. String nazwa;
  10.  
  11. @Override
  12. public int compareTo(Mebel that) {
  13. int result = nazwa.compareTo(that.nazwa);
  14. if (result == 0) {
  15. return getClass().getName().compareTo(that.getClass().getName());
  16. } else {
  17. return result;
  18. }
  19. }
  20. }
  21.  
  22. class Krzesuo extends Mebel {
  23.  
  24. int wysokośćOparcia;
  25.  
  26. @Override
  27. public int compareTo(Mebel o) {
  28. int result = super.compareTo(o);
  29. if (result == 0 && o instanceof Krzesuo) {
  30. Krzesuo that = (Krzesuo) o;
  31. return Integer.compare(wysokośćOparcia, that.wysokośćOparcia);
  32. } else {
  33. return result;
  34. }
  35. }
  36.  
  37. @Override
  38. public String toString() {
  39. return "Krzesło, nazwa=" + nazwa + ", wysokośćOparcia="
  40. + wysokośćOparcia;
  41. }
  42. }
  43.  
  44. class Szafa extends Mebel {
  45.  
  46. int ilośćDrzwi;
  47.  
  48. @Override
  49. public int compareTo(Mebel o) {
  50. int result = super.compareTo(o);
  51. if (result == 0 && o instanceof Szafa) {
  52. Szafa that = (Szafa) o;
  53. return Integer.compare(ilośćDrzwi, that.ilośćDrzwi);
  54. } else {
  55. return result;
  56. }
  57. }
  58.  
  59. @Override
  60. public String toString() {
  61. return "Szafa, nazwa=" + nazwa + ", ilośćDrzwi=" + ilośćDrzwi;
  62. }
  63. }
  64.  
  65. public class Main {
  66.  
  67. public static void main(String[] args) throws Exception {
  68. List<Mebel> meble = new ArrayList<>();
  69. String[] nazwy = {"bolek", "lolek", "koziołek", "matołek", "ala", "ma",
  70. "kota", "kot", "ma", "aids"};
  71. Random random = new Random(5);
  72. for (int i = 0; i < 3; i++) {
  73. for (String nazwa : nazwy) {
  74. Krzesuo k = new Krzesuo();
  75. k.nazwa = nazwa;
  76. k.wysokośćOparcia = random.nextInt(10);
  77. meble.add(k);
  78.  
  79. Szafa s = new Szafa();
  80. s.nazwa = nazwa;
  81. s.ilośćDrzwi = random.nextInt(5);
  82. meble.add(s);
  83. }
  84. }
  85.  
  86. Collections.shuffle(meble);
  87.  
  88. Collections.sort(meble);
  89.  
  90. for (Mebel mebel : meble) {
  91. System.out.println(mebel);
  92. }
  93. }
  94. }
  95.  
Success #stdin #stdout 0.08s 380544KB
stdin
Standard input is empty
stdout
Krzesło, nazwa=aids, wysokośćOparcia=7
Krzesło, nazwa=aids, wysokośćOparcia=7
Krzesło, nazwa=aids, wysokośćOparcia=9
Szafa, nazwa=aids, ilośćDrzwi=1
Szafa, nazwa=aids, ilośćDrzwi=2
Szafa, nazwa=aids, ilośćDrzwi=3
Krzesło, nazwa=ala, wysokośćOparcia=2
Krzesło, nazwa=ala, wysokośćOparcia=3
Krzesło, nazwa=ala, wysokośćOparcia=5
Szafa, nazwa=ala, ilośćDrzwi=0
Szafa, nazwa=ala, ilośćDrzwi=0
Szafa, nazwa=ala, ilośćDrzwi=1
Krzesło, nazwa=bolek, wysokośćOparcia=4
Krzesło, nazwa=bolek, wysokośćOparcia=7
Krzesło, nazwa=bolek, wysokośćOparcia=8
Szafa, nazwa=bolek, ilośćDrzwi=0
Szafa, nazwa=bolek, ilośćDrzwi=1
Szafa, nazwa=bolek, ilośćDrzwi=2
Krzesło, nazwa=kot, wysokośćOparcia=3
Krzesło, nazwa=kot, wysokośćOparcia=7
Krzesło, nazwa=kot, wysokośćOparcia=8
Szafa, nazwa=kot, ilośćDrzwi=0
Szafa, nazwa=kot, ilośćDrzwi=0
Szafa, nazwa=kot, ilośćDrzwi=2
Krzesło, nazwa=kota, wysokośćOparcia=2
Krzesło, nazwa=kota, wysokośćOparcia=7
Krzesło, nazwa=kota, wysokośćOparcia=7
Szafa, nazwa=kota, ilośćDrzwi=0
Szafa, nazwa=kota, ilośćDrzwi=2
Szafa, nazwa=kota, ilośćDrzwi=4
Krzesło, nazwa=koziołek, wysokośćOparcia=1
Krzesło, nazwa=koziołek, wysokośćOparcia=1
Krzesło, nazwa=koziołek, wysokośćOparcia=6
Szafa, nazwa=koziołek, ilośćDrzwi=0
Szafa, nazwa=koziołek, ilośćDrzwi=2
Szafa, nazwa=koziołek, ilośćDrzwi=3
Krzesło, nazwa=lolek, wysokośćOparcia=0
Krzesło, nazwa=lolek, wysokośćOparcia=4
Krzesło, nazwa=lolek, wysokośćOparcia=8
Szafa, nazwa=lolek, ilośćDrzwi=1
Szafa, nazwa=lolek, ilośćDrzwi=2
Szafa, nazwa=lolek, ilośćDrzwi=4
Krzesło, nazwa=ma, wysokośćOparcia=1
Krzesło, nazwa=ma, wysokośćOparcia=5
Krzesło, nazwa=ma, wysokośćOparcia=6
Krzesło, nazwa=ma, wysokośćOparcia=8
Krzesło, nazwa=ma, wysokośćOparcia=9
Krzesło, nazwa=ma, wysokośćOparcia=9
Szafa, nazwa=ma, ilośćDrzwi=0
Szafa, nazwa=ma, ilośćDrzwi=0
Szafa, nazwa=ma, ilośćDrzwi=0
Szafa, nazwa=ma, ilośćDrzwi=2
Szafa, nazwa=ma, ilośćDrzwi=3
Szafa, nazwa=ma, ilośćDrzwi=3
Krzesło, nazwa=matołek, wysokośćOparcia=0
Krzesło, nazwa=matołek, wysokośćOparcia=2
Krzesło, nazwa=matołek, wysokośćOparcia=4
Szafa, nazwa=matołek, ilośćDrzwi=1
Szafa, nazwa=matołek, ilośćDrzwi=2
Szafa, nazwa=matołek, ilośćDrzwi=2