fork download
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.Comparator;
  4. import java.util.List;
  5. import java.util.Set;
  6. import java.util.TreeSet;
  7.  
  8. public class Main {
  9. public static void main(String[] args) {
  10. System.out.println("Исходный массив:");
  11.  
  12. String[] str = new String[] {"K1\\SK1", "K1\\SK2", "K1\\SK1\\SSK1", "K1\\SK1\\SSK2", "K2", "K2\\SK1\\SSK1", "K2\\SK1\\SSK2"};
  13. for(int i = 0; i < str.length; i++) {
  14. System.out.println(str[i]);
  15. }
  16.  
  17. ArrayList<String> paths = new ArrayList<String>(Arrays.asList(str));
  18.  
  19. Set<String> out = new TreeSet<String>();
  20. for(String i : paths) {
  21. ArrayList<String> path = new ArrayList<String>(Arrays.asList(i.trim().split("\\\\")));
  22.  
  23. for(int j = 1; j <= path.size(); j++) {
  24. List<String> s = path.subList(0, j);
  25. out.add(String.join("\\",s));
  26. }
  27. }
  28.  
  29. System.out.println("\nРезультат, отсортированный по возрастанию:");
  30. for(String i:out) {
  31. System.out.println(i);
  32. }
  33.  
  34. Set<String> reversed = new TreeSet<String>(new Comparator<String>() {
  35.  
  36. @Override
  37. public int compare(String o1, String o2) {
  38. return o2.compareTo(o1);
  39. }
  40. });
  41.  
  42. System.out.println("\nРезультат, отсортированный по убыванию:");
  43. for(String i:reversed) {
  44. System.out.println(i);
  45. }
  46. }
  47. }
Success #stdin #stdout 0.04s 711168KB
stdin
Standard input is empty
stdout
Исходный массив:
K1\SK1
K1\SK2
K1\SK1\SSK1
K1\SK1\SSK2
K2
K2\SK1\SSK1
K2\SK1\SSK2

Результат, отсортированный по возрастанию:
K1
K1\SK1
K1\SK1\SSK1
K1\SK1\SSK2
K1\SK2
K2
K2\SK1
K2\SK1\SSK1
K2\SK1\SSK2

Результат, отсортированный по убыванию: