覆盖添加无效

时间:2011-04-04 06:02:59

标签: java override

添加应该是一个覆盖的方法,其中字符串按字母顺序放在arraylist中,但每当我执行程序时,Arraylist总是按照我添加它的顺序。

这是测试:

import java.util.*;
public class Test
{
    private static ArrayList x=new ArrayList();
    private static ArrayList<String> li=new ArrayList<String>();
    private static SortedList s=new SortedList();
   // private static Person p[]=new Person[4];
   // private static Fraction f[]=new Fraction[5];

    public static void main(String args[])
    {
       //number 1
        x.add(5);
        x.add(6);
        x.add(1.5);
        x.add(7);
        x.add(2.5);
        System.out.println(average(x,2));  //5.5
        System.out.println(average(x,7));   //4.4

        //number 2
        li.add("Hi");
        li.add("del");
        li.add("there");
        li.add("del");
        li.add("you");
        li.add("del");
        System.out.println(li);
        takeOut(li,"del");
        System.out.println(li);

        //number 3
        s.add("dog");
        s.add("anteater");
        s.add("kewl");
        s.add("kitty");
        s.add("a");
        System.out.println(s);

        //number 4
      //  p[0]=new Person("Kremer","Jim");
        //p[1]=new Person("Shi","Kevin");
       // p[2]=new Person("Shi","Rebecca"); //I know I spelled your name wrong, Rebecca. (I needed two last names to be the same)
       // p[3]=new Person("Herman", "Jimmy");
      //  Arrays.sort(p);  //static method in java.util.Arrays
      //  for(int i=0; i<p.length; i++)
        System.out.println(p[i].getFirstName()+" "+p[i].getLastName());

        //number 5
        f[0]=new Fraction(4,5);
       f[1]=new Fraction(5,4);
        f[2]=new Fraction(-8,3);
        f[3]=new Fraction(6,5);
       f[4]=new Fraction(-1,2);
        Arrays.sort(f);
       for(int i=0; i<f.length; i++)
            System.out.println(f[i].getNum()+"/"+f[i].getDenom());
    }

    //number 1
    public static Double average(ArrayList samples, int num)
    {
        double sum=0.0;
        if(num>samples.size())
        {
            for(int i=0; i<samples.size(); i++)
            {
                if(samples.get(i) instanceof Integer)
                    sum+=(Integer)samples.get(i);
                else
                    sum+=(Double)samples.get(i);
            }
            return sum/samples.size();
        }
        else
        {
            for(int i=0; i<num; i++)
            {
                if(samples.get(i) instanceof Integer)
                    sum+=(Integer)samples.get(i);
                else
                    sum+=(Double)samples.get(i);
            }
            return sum/num;
        }

    }

    //number 2
    public static void takeOut(List<String> words, String del)
    {
        for(int i=0; i<words.size(); i++)
        {
            if(words.get(i).equals(del))
            {
                words.remove(i);
                i--;
            }
        }
    }

}

这是SortedList:

import java.util.ArrayList;
import java.util.List;
import java.lang.String;

public class SortedList extends ArrayList<String>
{
    private ArrayList<String> a;

    public SortedList()
    {
        a = new ArrayList<String>(10);
    }
    public SortedList(int cap)
    {
        super(cap);
    }
    public boolean add(String x)
    {
        if(a.size()!=0)
        {
            for(int i=0; i<a.size(); i++)
            {
                if(i==a.size()-1)
                    if(x.compareTo(a.get(i))>=0)
                        super.add(x);
                else
                {
                    if(i==0)
                        if(x.compareTo(a.get(i))<=0)
                            super.add(0,x);
                    if(x.compareTo(a.get(i))>=0 && x.compareTo(a.get(i+1))<=0)
                        super.add(i+1,x);
                }
            }
        }
        else
            super.add(x);
        return true;
    }
}

提前致谢!

2 个答案:

答案 0 :(得分:2)

a.size() != 0始终为false,因为您的SortedList实施不会在列表a中添加任何元素。这导致始终使用super.add(x)并且重写的add方法实际上不会修改ArrayList的行为

答案 1 :(得分:0)

用户,

查找Java Collections界面。 Java可以按字母顺序为您排序这些元素:

ArrayList<String> a = new ArrayList<String>

a.add("world");
a.add("hello");

Collections.sort(a);

//sorted alphabetically now

如果默认排序方向错误,只需实施您自己的Comparator并致电:

Collections.sort(a, myComparator);

这应该做你想要的,除非这是一个家庭作业......

相关问题