import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class Main {
    public static void main(String[] args) {
    	System.out.println("Исходный массив:");
 
    	String[] str = new String[] {"K1\\SK1", "K1\\SK2", "K1\\SK1\\SSK1", "K1\\SK1\\SSK2", "K2", "K2\\SK1\\SSK1", "K2\\SK1\\SSK2"};
    	for(int i = 0; i < str.length; i++) {
    		System.out.println(str[i]);
    	}
    	
    	ArrayList<String> paths = new ArrayList<String>(Arrays.asList(str));
    
    	Set<String> out = new TreeSet<String>();
    	for(String i : paths) {
    		ArrayList<String> path = new ArrayList<String>(Arrays.asList(i.trim().split("\\\\")));
  
    		for(int j = 1; j <= path.size(); j++) {
    			List<String> s = path.subList(0, j);
    			out.add(String.join("\\",s));
    		}
    	}

    	System.out.println("\nРезультат, отсортированный по возрастанию:");
    	for(String i:out) {
    		System.out.println(i);
    	}
    	
        Set<String> reversed = new TreeSet<String>(new Comparator<String>() {
        	
        	@Override
            public int compare(String o1, String o2) {
        		return o2.compareTo(o1);
            }	
        });
        
    	System.out.println("\nРезультат, отсортированный по убыванию:");
    	for(String i:reversed) {
    		System.out.println(i);
    	}
    }
}