summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/aai/sparky/util/SuggestionsPermutation.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/aai/sparky/util/SuggestionsPermutation.java')
-rw-r--r--src/main/java/org/onap/aai/sparky/util/SuggestionsPermutation.java85
1 files changed, 52 insertions, 33 deletions
diff --git a/src/main/java/org/onap/aai/sparky/util/SuggestionsPermutation.java b/src/main/java/org/onap/aai/sparky/util/SuggestionsPermutation.java
index 463d122..ba51254 100644
--- a/src/main/java/org/onap/aai/sparky/util/SuggestionsPermutation.java
+++ b/src/main/java/org/onap/aai/sparky/util/SuggestionsPermutation.java
@@ -36,44 +36,63 @@ public class SuggestionsPermutation {
*
* @return A Arraylist which contains a array list of all possible combinations
*/
- @SuppressWarnings("serial")
- public ArrayList<ArrayList<String>> getSuggestionsPermutation(List<String> list) {
- List<String> statusList = new ArrayList<>(list);
- List<String> dupStatusList;
- ArrayList<ArrayList<String>> uniqueList = new ArrayList<ArrayList<String>>();
- int mainLoopIndexCounter = 0;
- for (String status : statusList) {
- // Add the single entity subset
- uniqueList.add(new ArrayList<String>() {
- {
- add(status);
- }
- });
- // Remove all the elements to left till the current index
- dupStatusList = truncateListUntill(statusList, mainLoopIndexCounter);
+ public static ArrayList<ArrayList<String>> getUniqueListForSuggestions(
+ List<String> originalList) {
+ ArrayList<ArrayList<String>> lists = new ArrayList<ArrayList<String>>();
+ if (originalList.isEmpty()) {
+ lists.add(new ArrayList<String>());
+ return lists;
+ }
+ List<String> list = new ArrayList<String>(originalList);
+ String head = list.get(0);
+ ArrayList<String> rest = new ArrayList<String>(list.subList(1, list.size()));
- while (dupStatusList.size() > 0) {
- ArrayList<String> suggListInIterate = new ArrayList<>();
- suggListInIterate.add(status);
- for (String dupStatus : dupStatusList) {
- suggListInIterate.add(dupStatus);
- }
- uniqueList.add(suggListInIterate);
- dupStatusList.remove(0);
- }
- mainLoopIndexCounter++;
+ for (ArrayList<String> activeList : getUniqueListForSuggestions(rest)) {
+ ArrayList<String> newList = new ArrayList<String>();
+ newList.add(head);
+ newList.addAll(activeList);
+ lists.add(newList);
+ lists.add(activeList);
}
- return uniqueList;
+ return lists;
+ }
+ public static ArrayList<ArrayList<String>> getNonEmptyUniqueLists(List<String> list) {
+ ArrayList<ArrayList<String>> lists = getUniqueListForSuggestions(list);
+ // remove empty list from the power set
+ for (ArrayList<String> emptyList : lists) {
+ if (emptyList.isEmpty()) {
+ lists.remove(emptyList);
+ break;
+ }
+ }
+ return lists;
}
- private List<String> truncateListUntill(List<String> lists, int index) {
- List<String> truncatedList = new ArrayList<>(lists);
- int counter = 0;
- while (counter <= index) {
- truncatedList.remove(0);
- counter++;
+ public static List<List<String>> getListPermutations(List<String> list) {
+ List<String> inputList = new ArrayList<String>();
+ inputList.addAll(list);
+ if (inputList.size() == 0) {
+ List<List<String>> result = new ArrayList<List<String>>();
+ result.add(new ArrayList<String>());
+ return result;
}
- return truncatedList;
+
+ List<List<String>> listOfLists = new ArrayList<List<String>>();
+
+ String firstElement = inputList.remove(0);
+
+ List<List<String>> recursiveReturn = getListPermutations(inputList);
+ for (List<String> li : recursiveReturn) {
+
+ for (int index = 0; index <= li.size(); index++) {
+ List<String> temp = new ArrayList<String>(li);
+ temp.add(index, firstElement);
+ listOfLists.add(temp);
+ }
+
+ }
+ return listOfLists;
}
+
}