回 帖 发 新 帖 刷新版面

主题:帮帮看,谢谢

package Aufgaben;
import java.util.*;
import java.io.*;
import java.util.Arrays;
import java.lang.*;

public class ComparatorTest1 
{
    public static void main (String[] args) throws Exception
    {
        ANewPolitiker np1 = new ANewPolitiker("Johannes Rau",1999,2004,"Bundespraeident");
        ANewPolitiker np2 = new ANewPolitiker("Konrad Adenauer" ,1949,1963,"Bundeskanzler");
        ANewPolitiker np3 = new ANewPolitiker("Heinrich Lueke",1959,1969,"Bundespraeident");
        ANewPolitiker np4 = new ANewPolitiker("Willy Brandt",1969,1974,"Bundeskanzler");
        ANewPolitiker np5 = new ANewPolitiker("Helmut Kohl",1982,1998,"Bundeskanzler");
        ANewPolitiker np6 = new ANewPolitiker("Gerhard Schraeer",1998,2005,"Bundeskanzler");
        ANewPolitiker np7 = new ANewPolitiker("Theodor Heuss",1949,1959,"Bundespraeident");
        ANewPolitiker np8 = new ANewPolitiker("Richard von Weizsueker",1984,1994,"Bundespraeident");
        ANewPolitiker np9 = new ANewPolitiker("Gustav Heinemann",1969,1974,"Bundespraeident");
        ANewPolitiker np10 = new ANewPolitiker("Walter Scheel",1974,1979,"Bundespraeident");
        ANewPolitiker np11 = new ANewPolitiker("Kurt Georg Kiesinger",1966,1969,"Bundeskanzler");
        ANewPolitiker np12 = new ANewPolitiker("Karl Carstens",1979,1984,"Bundespraeident");
        ANewPolitiker np13 = new ANewPolitiker("Helmut Schmidt",1974,1982,"Bundeskanzler");
        ANewPolitiker np14 = new ANewPolitiker("Roman Herzog",1994,1999,"Bundespraeident");
        ANewPolitiker np15 = new ANewPolitiker("Ludwig Erhard",1963,1966,"Bundeskanzler");
        
        ANewPolitiker []Politikers = new ANewPolitiker[] {np1,np2,np3,np4,np5,np6,np7,np8,np9,np10,np11,np12,np13,np14,np15};
        
        Vector v1 = new Vector();
        Vector v2 = new Vector();
        

        for(int i=0;i<Politikers.length;i++)
        {
            ANewPolitiker np = Politikers[i];
            if("Bundespraeident".equals(np.getAmtsBezeichnung()))
            {
                v1.addElement(np.getName()+"("+np.getAmtsBeginn()+"-"+np.getAmtsEnde()+")");
            }
            else
            {
                v2.addElement(np.getName()+"("+np.getAmtsBeginn()+"-"+np.getAmtsEnde()+")");
            }
        }
        
        /*LinkedListTest lkt = new LinkedListTest(new LinkedList());
        lkt.einfuegen(0, "Bundespraesident");
        lkt.einfuegen(1, "Bundeskanzler");
        lkt.sort();
        LinkedList l = new LinkedList();
        l.add("Bundespraesident");
        l.add("Bundeskanzler");*/
        Comparator DurchChronologie = new Comparator(){
        public int compare(Object erstPolitiker, Object zweitPolitiker) 
        {
            ANewPolitiker b1 = (ANewPolitiker)erstPolitiker;
            ANewPolitiker b2 = (ANewPolitiker)zweitPolitiker;
            return (b1.getName().hashCode()-b2.getName().hashCode());
        }
        };
        Collections.sort(v1);
        System.out.println(v1);
        
        Collections.sort(v1, DurchChronologie);
        Collections.sort(v2, DurchChronologie);
        System.out.println(v1);
        System.out.println(v2);
            }
}
class ANewPolitiker

{
    private String name;
    private int amtsBeginn;
    private int amtsEnde;
    private String amtsBezeichnung;
    
    public ANewPolitiker (String name ,int amtsBeginn, int amtsEnde, String amtsBezeichnung)
    {
        this.name = name;
        this.amtsBeginn = amtsBeginn;
        this.amtsEnde = amtsEnde;
        this.amtsBezeichnung = amtsBezeichnung;
    }
    
    public void setName ( String name )
    {
        this.name = name;
    }
    
    public String getName ()
    {
        return name;
    }
    
    public void setAmtsBeginn( int amtsBeginn )
    {
        this.amtsBeginn = amtsBeginn;
    }
    
    public int getAmtsBeginn ()
    {
        return amtsBeginn;
    }
    
    public void setAmtsEnde( int amtsEnde )
    {
        this.amtsEnde = amtsEnde;
    }
    
    public int getAmtsEnde ()
    {
        return amtsEnde;
    }
    
    public void setAmtsBezeichnung( String amtsBezeichnung )
    {
        this.amtsBezeichnung = amtsBezeichnung;
    }
    
    public String getAmtsBezeichnung ()
    {
        return amtsBezeichnung;
    }
    
}

回复列表 (共3个回复)

沙发


Comparator DurchChronologie = new Comparator(){
        public int compare(Object erstPolitiker, Object zweitPolitiker) 
        {
            ANewPolitiker b1 = (ANewPolitiker)erstPolitiker;
            ANewPolitiker b2 = (ANewPolitiker)zweitPolitiker;
            return (b1.getName().hashCode()-b2.getName().hashCode());
        }
        };
        主要是这得问题,提示我有下面的错
        Exception in thread "main" java.lang.ClassCastException: java.lang.String
    at Aufgaben.ComparatorTest1$1.compare(ComparatorTest1.java:56)
    at java.util.Arrays.mergeSort(Unknown Source)
    at java.util.Arrays.mergeSort(Unknown Source)
    at java.util.Arrays.sort(Unknown Source)
    at java.util.Collections.sort(Unknown Source)
    at Aufgaben.ComparatorTest1.main(ComparatorTest1.java:64)

板凳

public int compare(Object erstPolitiker, Object zweitPolitiker) 
        {
            ANewPolitiker b1 = (ANewPolitiker)erstPolitiker;
            ANewPolitiker b2 = (ANewPolitiker)zweitPolitiker;
            return (b1.getName().hashCode()-b2.getName().hashCode());
        }
        };
这里,你比较的两个对象是ANewPolitiker 类,而
Collections.sort(v1, DurchChronologie);
Collections.sort(v2, DurchChronologie);
这里你的 v1 里的元素是String ,所以会抛出java.lang.ClassCastException

Vector v1 = new Vector();
        Vector v2 = new Vector();
        
        //----------------------------------------
        List list1 = new ArrayList();
        List list2 = new ArrayList();
        //----------------------------------------

        for (int i = 0; i < Politikers.length; i++) {
            ANewPolitiker np = Politikers[i];
            if ("Bundespraeident".equals(np.getAmtsBezeichnung())) {
                
                v1.addElement(np.getName() + "(" + np.getAmtsBeginn() + "-"
                        + np.getAmtsEnde() + ")");
                
                //---------------------------
                list1.add(np);
                
            } else {
                
                v2.addElement(np.getName() + "(" + np.getAmtsBeginn() + "-"
                        + np.getAmtsEnde() + ")");
                
                //-----------------------------
                list2.add(np);
            }
        }

        /*
         * LinkedListTest lkt = new LinkedListTest(new LinkedList());
         * lkt.einfuegen(0, "Bundespraesident"); lkt.einfuegen(1,
         * "Bundeskanzler"); lkt.sort(); LinkedList l = new LinkedList();
         * l.add("Bundespraesident"); l.add("Bundeskanzler");
         */
        Comparator DurchChronologie = new Comparator() {

            public int compare(Object erstPolitiker, Object zweitPolitiker) {

                ANewPolitiker b1 = (ANewPolitiker) erstPolitiker;
                ANewPolitiker b2 = (ANewPolitiker) zweitPolitiker;

                return (b1.getName().hashCode() - b2.getName().hashCode());
            }

        };
        Collections.sort(v1);
        System.out.println(v1);

        //----------------------------------------------------
        //Collections.sort(v1, DurchChronologie);
        //Collections.sort(v2, DurchChronologie);
        Collections.sort(list1, DurchChronologie);
        Collections.sort(list2, DurchChronologie);
        
        for(Object obj : list1){
            ANewPolitiker a = (ANewPolitiker)obj;
            System.out.println(a.getName() + "(" + a.getAmtsBeginn() + "-"
                    + a.getAmtsEnde() + ")");
        }
        //写到这边,做个参考,具体想实现什么功能,自己参考着写吧!
        //---------------------------------------------------
        
        System.out.println(v1);
        System.out.println(v2);

3 楼


非常感谢,不过我还有点问题,发了个新贴,再次请教,谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册