Ispirato da quanto scritto da andbin ho risolto nel seguente modo , molto rude ma efficace:
(Preciso innanzitutto che so che l'input avrà lunghezza massima 8 , inoltre ora do l'ingresso come String invece che int [] ma vabè dettagli a partire da int [] costruisco la String concatenando i suoi elementi)

codice:
public static LinkedList<String> getCombinazioni (String s , int k) {        
        LinkedList<String> l = new LinkedList<String> ();
        int n = s.length ();
        StringBuilder sb = new StringBuilder ();
        //1
        if (k >= 1) {
            for (int i=0;i<n;i++) {
                l.add (s.charAt (i) + "");
            }
        }


        //2
        if (k >= 2) {
            for (int i=0;i<n;i++) {
                for (int j=i+1;j<n;j++) {
                    sb.append (s.charAt (i));
                    sb.append (s.charAt (j));
                    l.add (sb.toString ());
                    sb = new StringBuilder ();
                }
            }
        }


        //3
        if (k>=3) {
            for (int i=0;i<n;i++) {
                for (int j=i+1;j<n;j++) {
                    sb = new StringBuilder ();
                    for (int z=j+1;z<n;z++) {
                        sb.append (s.charAt (i));
                        sb.append (s.charAt (j));
                        sb.append (s.charAt (z));
                        l.add (sb.toString ());
                        sb = new StringBuilder ();
                    }
                }
            }
        }


        //4
        if (k >=4) {
            for (int i=0;i<n;i++) {
                for (int j=i+1;j<n;j++) {
                    for (int z=j+1;z<n;z++) {
                        for (int a=z+1;a<n;a++) {
                            sb.append (s.charAt (i));
                            sb.append (s.charAt (j));
                            sb.append (s.charAt (z));
                            sb.append (s.charAt (a));
                            l.add (sb.toString ());
                            sb = new StringBuilder ();
                        }
                    }
                }
            }
        }


        //5
        if (k >= 5) {
            for (int i=0;i<n;i++) {
                for (int j=i+1;j<n;j++) {
                    for (int z=j+1;z<n;z++) {
                        for (int a=z+1;a<n;a++) {
                            for (int b=a+1;b<n;b++) {
                                sb.append (s.charAt (i));
                                sb.append (s.charAt (j));
                                sb.append (s.charAt (z));
                                sb.append (s.charAt (a));
                                sb.append (s.charAt (b));
                                l.add (sb.toString ());
                                sb = new StringBuilder ();
                            }
                        }
                    }
                }
            }
        }


        //6
        if (k >= 6) {
            for (int i=0;i<n;i++) {
                for (int j=i+1;j<n;j++) {
                    for (int z=j+1;z<n;z++) {
                        for (int a=z+1;a<n;a++) {
                            for (int b=a+1;b<n;b++) {
                                for (int c=b+1;c<n;c++) {
                                    sb.append (s.charAt (i));
                                    sb.append (s.charAt (j));
                                    sb.append (s.charAt (z));
                                    sb.append (s.charAt (a));
                                    sb.append (s.charAt (b));
                                    sb.append (s.charAt (c));
                                    l.add (sb.toString ());
                                    sb = new StringBuilder ();
                                }
                            }
                        }
                    }
                }
            }
        }
        
        //7
        //STESSA PROCEDURA FATTA SOPRA MA AGGIUNGENDO UN ALTRO FOR ANNIDATO
        
                //8
                //IDEM PER LA PROCEDURA 7 MA CON 8 FOR ANNIDATI...


        return l;
    }