已知A、B、C、D、E,其中B的子集为A,C的子集为AB,D的子集为C,E的子集为B。要求按照大小排序,如果没有子集,则默认值为0,有则按照最大的子集+1进行排序。
2条回答 默认 最新
Code_Xiang 2024-01-03 18:50关注import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; class Element { public String name; public String subset; public Element(String name, String subset) { this.name = name; this.subset = subset; } } public class SubsetSort { public static void main(String[] args) { List<Element> elements = new ArrayList<>(); elements.add(new Element("A", "")); elements.add(new Element("B", "A")); elements.add(new Element("C", "AB")); elements.add(new Element("D", "C")); elements.add(new Element("E", "B")); Collections.sort(elements, new Comparator<Element>() { @Override public int compare(Element e1, Element e2) { if (e1.subset.isEmpty() && e2.subset.isEmpty()) { return 0; } else if (e1.subset.isEmpty()) { return -1; } else if (e2.subset.isEmpty()) { return 1; } else { return Integer.compare(e2.subset.length(), e1.subset.length()); } } }); for (Element e : elements) { System.out.println(e.name); } } }解决 无用评论 打赏 举报