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

如何在Java中制作一组数组?

鲜于凯康
2023-03-14
问题内容

由于数组中的equals函数仅检查实例,因此它不适用于Set。因此,我想知道如何在Java中制作一组数组?

一种可能的方法是将每个数组放在一个对象中,并为该类实现equals函数,但这会降低性能吗?


问题答案:

由于ArrayList类已经包装了一个数组,因此您可以扩展它并覆盖equalsand hashCode方法。这是一个示例:

public MyArrayList extends ArrayList<MyClass> {

    @Override
    public boolean equals(Object o) {
        if (o instanceof MyArrayList) {
            //place your comparison logic here
            return true;
        }
        return false;
    }

    @Override
    public int hashCode() {
        //just a sample, you can place your own code
        return super.hashCode();
    }
}

更新:

您甚至可以重写它以用于一般用途,只需将代码更改为:

public MyArrayList<T> extends ArrayList<T> {
    //overrides the methods you need
    @Override
    public boolean equals(Object o) {
        if (o instanceof MyArrayList) {
            //place your comparison logic here
            return true;
        }
        return false;
    }
}


 类似资料:
  • 问题内容: 我想创建一个布尔数组,该数组的大小将为用户输入。例如-用户可能会输入一个大数字,例如1000000000000; 所以然后我必须创建一个大小为1000000000000的布尔数组。我面临的问题是,我无法将输入存储为int,因为它不能容纳这么大的数字- 因此我无法创建该数组。Double是一个我可以将输入数字存储为double,但是我不知道如何创建double大小的数组。这就是- 如果目

  • 问题内容: 假设地,我有5个字符串数组对象: 我希望另一个数组对象包含这5个字符串数组对象。我该怎么做?我可以把它放在另一个数组中吗? 问题答案: 像这样: 要么 (后一种语法可以用于变量声明之外的赋值中,而较短的语法仅适用于声明。)

  • 问题内容: 我需要为正在进行的项目制作一个相当大的二维数组的副本。我有两个2D阵列: 我也有两种方法来进行复制。我需要复制数组,因为当前会定期更新。 和 但是,这不起作用。如果我叫old,对current进行更新,然后再调用keepold,则current不等于原来的值。为什么会这样呢? 谢谢 问题答案: 或使两个数组引用相同的东西,因此,如果你随后修改,也会被修改。要将一个数组的内容复制到另一个

  • 所以我需要制作一个彩票游戏的程序。 我的代码支持4个游戏,6-42,MegaLotto(6-45),SuperLotto(6-49)和GrandLotto(6-55)它会询问要玩哪个游戏,6-42输入1等等。 游戏共有10名玩家,每个玩家的彩票中都有不重复的随机数字。(例如玩家1:1,2,3,4,5,6玩家2:2,3,4,5,6,7以此类推。) 有一个赢的组合(例如赢的组合:1,2,3,4,5,6

  • 问题内容: 如果我使用List,Vector之类的普通类,则会得到一个返回所考虑类的长度的函数,但是如果我使用一个类的数组或默认数据类型,则会得到一个公共成员的长度,该长度返回当前类的长度。数组的长度。 这是为什么?我的意思是数组不是自己的类,不是吗?因此,如果它不是类,则不能有成员变量。我不知道如何在后台处理(字节码)。我知道在内存中的数组存储有指向数组第一个元素的指针,并且内存指针被移至索引(

  • 在C中,我有两个字符数组: 如何将