Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        4年前关闭。
                    
                
        

private class myComparator implements Comparator<Object>{

        @Override
        public int compareTo(Object obj1, Object obj1) {


            if ((obj1.getNumber() - obj2.getNumber()) == 0) {
                return 0;
            }
            if ((obj1.getNumber() > obj2.getNumber())  {
                return 1;
            }

            return -1;
        }


嘿,我不知道如何在我要实现的Comparator类中实现compareTo方法。我正在尝试将两个对象的整数值进行升序比较。但是我真的不确定去哪里

稍后,我将在另一个类中将此类称为collections.sort(someList,myComparator)。

最佳答案

编辑后,您的Comparator现在采用Object类型。以下解释的相同规则将适用于您的Comparator<Object>。但是,由于object没有任何此类方法,因此如果不进行显式强制转换,将无法调用getNumber方法。



如果使用Comparator,则应注意以下几点


您实现Comparator<Event>接口。这意味着您要比较两个Event对象。
Comparator没有compareTo方法。它具有一个compare方法,该方法将采用您要实现的Comparator类型的两个参数。由于实现了Comparator<Event>,因此compare方法应带有2个Event参数。
java-doc中阅读Comparator以获取compare方法。它解释了int返回值代表什么。如果getNumber返回数字,请避免相减,否则您可能是溢出的受害者。
您已将myComparator声明为private类。仅当myComparator是内部类时,才允许这样做。


我故意不提供正确的代码,因为我想避免用汤匙喂您答案。

关于java - Java:如何使用Comparator接口(interface),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30589607/

10-12 06:28