为了账号安全,请及时绑定邮箱和手机立即绑定

对象列表 Java 任务

对象列表 Java 任务

翻阅古今 2022-01-12 16:49:06
我已经获得了以下主要方法,并且必须为 ObjectList 类编写代码。我应该推断 ObjectList 类的必要功能并自己编写该类,但是我不确定我需要做什么才能实现此功能。非常感谢任何帮助理解这一点。这是给我的代码:   ObjectList ol = new ObjectList(3);   String s = "Im Happy";   Dog d = new Dog();   DVD v = new DVD();   Integer i = 1234;   System.out.println(ol.add(s));   System.out.println(ol.add(d));   System.out.println(ol.add(v));   System.out.println(ol.add(i));   ol.remove(0);   System.out.println(ol.add(i));   System.out.println("Is the list full? "+ isFull());    System.out.println("Is the list empty? "+ isEmpty());   System.out.println("Total number of objects in the list: " + getTotal());   Object g = ol.getObject(1);   g.bark();
查看完整描述

2 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

这是很简单只需要创建的列表,Object使用类型ArrayList或LinkedList在ObjectList类并实现功能如下


public class ObjectList{

private ArrayList<Object> objects;

public ObjectList(int size)

{

    objects = new ArrayList<Object>(size);

}


public String add (Object object)

{

    objects.add(object);

    //anything you would like to return I'm just returning a string

    return "Object Added";

}


public void remove (int index)

{

    objects.remove(index);

}


public boolean isEmpty()

{

    return objects.isEmpty();

}


public int getTotal()

{

    return objects.size();

}


public Object getObject(int index)

{

    return objects.get(index);

}

}

在isFull()没有必要的,因为ArrayList大小可动态变化。您可以使用简单的数组代替ArrayList然后实现该isFull()函数。


此外,当使用 getgetObject()函数获取对象时,您需要在使用该函数之前将其转换为正确的类型。在您的代码中g.bark()不起作用,因为Object没有树皮功能


Object g = ol.getObject(1);


//This can give a runtime error if g is not a Dog

//Use try catch when casting

Dog d = (Dog)g;


d.bark();

编辑


isFull()如果使用数组而不是ArrayList为了简单起见,请使用该ArrayList版本,这就是您将如何实现和其他功能的方式


 public class ObjectList{

 private Object[] objects;

 private int size = 0;

 private int currentIndex = 0;



public ObjectList(int size)

{

    this.size = size;

    objects = new Object[size];

}


 private boolean isFull() {

    if(currentIndex == size)

        return true;

    else

        return false;

 }


 public String add (java.lang.Object object)

{

    if ( ! isFull() ) {

        objects[currentIndex] = object;

        currentIndex++;

        return "Object added";

    }

    return "List full : object not added";


}


public void remove (int index)

{

    if( !isEmpty() ) {

        //shifting all the object to the left of deleted object 1 index to the left to fill the empty space

        for (int i = index; i < size - 1; i++) {

            objects[i] = objects[i + 1];

        }

        currentIndex--;

    }

}


public boolean isEmpty()

{

    if(currentIndex == 0)

        return true;

    else

        return false;

}


public int getTotal()

{

    return currentIndex;

}


public java.lang.Object getObject(int index)

{

    if(index < currentIndex)

     return objects[index];

    else

        return  null;

}

}



查看完整回答
反对 回复 2022-01-12
?
函数式编程

TA贡献1807条经验 获得超9个赞

您似乎想要实现的是“扩展” ArrayList的功能并创建自定义对象列表。您可以做的是创建一个扩展 ArrayList 的类并定义/覆盖您想要的任何其他方法。


public class ObjectList extends ArrayList<Object> {

//constructor with initial capacity

private int length;

public ObjectList(int size){

   super(size);

   this.length= size;

}


public Object getObject(int index){

    return this.get(index);

}

}

现在您拥有从 ArrayList 类和getObject方法继承的添加和删除函数。


关于isFull方法,您可以检查 ObjectList 类的大小是否等于它被实例化的大小


if(this.size() == this.length){

return true

}

return false;

并获得总计


public int getTotal(){

return this.size();

}


查看完整回答
反对 回复 2022-01-12
  • 2 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信