m0_53568616 2024-01-03 18:44 采纳率: 0%
浏览 7

怎么用java实现排序

已知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);
            }
        }
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 1月3日