当前位置: 首页 > 面试题库 >

扩展ArrayList并创建新方法

郎羽
2023-03-14
问题内容

我在掌握某些内容时遇到了一些问题-我可能正在处理完全错误的问题。

我正在尝试创建一个扩展ArrayList的类,但是具有一些增加功能的方法(至少对于我正在开发的程序而言)。

方法之一是findById(intid),它在每个ArrayList对象中搜索特定的id匹配项。到目前为止,它仍然有效,但它不会让我做for (Item i : this) { i.getId(); }

我不明白为什么?

完整代码:

public class CustomArrayList<Item> extends ArrayList<Item> {

    // declare singleton instance
    protected static CustomArrayList instance;

    // private constructor
    private CustomArrayList(){
        // do nothing
    }

    // get instance of class - singleton
    public static CustomArrayList getInstance(){
        if (instance == null){
            instance = new CustomArrayList();
        }
        return instance;
    }

    public Item findById(int id){
        Item item = null;
        for (Item i : this) {
            if (i.getId() == id) {
                      // something
         }
        }
        return item;
    }
    public void printList(){
        String print = "";
        for (Item i : this) {
            print += i.toString() + "\n";
        }
        System.out.println(print);
    }
}

问题答案:

更改

public class CustomArrayList<Item> extends ArrayList<Item> {

public class CustomArrayList extends ArrayList<Item> {

我怀疑Item是您要存储在列表中的类的名称。在引入类型参数<Item>CustomArrayList,添加一个可遮盖此类的参数。

使用该<Item>参数,您的代码等于

public class CustomArrayList<T> extends ArrayList<T> {
    // ...
        for (T i : this) { i.getId(); }
    // ...
}

显然,它T可能永远无法正常工作,因为它可能指向任何类型。



 类似资料:
  • 问题内容: 因此,我的程序需要一种圆形ArrayList。 唯一的循环问题必须是get(int index)方法,这是原始方法: 如果index为-1,则应获取索引为ArrayList.size()-1的元素;如果index为ArrayList.size(),则应获取索引为0的元素。 我想到的最简单的方法是从java.util包扩展ArrayList并覆盖get(int index),这样它就不会

  • 所以我的程序需要一种循环ArrayList类型。 关于它的唯一循环的事情是get(int index)方法,这是原始的: 我不能让它工作,因为我的班级看不到它,因为它是私人的。 另外,我不想为此使用任何外部库,因为我认为没有适合我需要的库,因为我不想要一个真正的circularArray,而只想要它的一部分功能,其余部分是常规的ArrayList。 所以我有两个问题:

  • 问题内容: 我想扩展ArrayList,为特定类添加一些方法,这些类的实例将由扩展的ArrayList保存。下面是一个简化的说明性代码示例。 这对我来说似乎是明智的,但是我对Java还是很陌生,我看到了其他阻碍扩展ArrayList的问题,例如,扩展ArrayList和创建新方法。我对Java的理解不够了解。 在我先前的尝试中,我最终在ThingContainer中创建了许多实际上是传递给Arra

  • 每个项目都是一个扩展包 一旦你的目录有一个 composer.json 文件,这个目录就是一个包。当你给一个项目添加一个 require 依赖时, 此时你正在创建一个依赖于其他包的包。 项目和扩展包唯一不同之处在于,项目是一个没有名称的包。 为了使该包可安装,你需要指定一个名称, 通过在 composer.json 中添加 name 属性: { "name": "acme/hello-wo

  • 我试图写一个函数在PostgreSQL在Windows与Python脚本的主体,我运行到一个错误的消息时,试图创建plpythonu扩展。我运行的命令是: 这将生成以下错误消息: 我还试着跑步: 这会导致以下错误: 大蟒蛇。dll文件存在于该位置,但显然缺少一些关键依赖项。我到处都找遍了,没发现有什么有用的。我已经在机器上安装了Python2和Python3。。。

  • 创建新的Arraylist(如第一种方法)与创建第二种方法之间的区别是什么?在创建一个时,您考虑了什么?