不同类型的数组

Tyl*_*ler 8 java

是否可以拥有包含两种不同类型数据的数组?我想要一个包含double和字符串的数组.我试过:

ArrayList<double><String> array;
Run Code Online (Sandbox Code Playgroud)

但那没用.

抱歉这个愚蠢的问题,但是我已经用了一段时间了,因为我已经使用了这样的东西..你能否刷新我的内存,我将如何声明和填充这样的数组?

然后再进一步,如果可能的话,我想用双排序数组?

谢谢!

Jon*_*eet 14

首先,值得清楚的是数组和数组之间的区别ArrayList- 它们根本不是一回事.

但是,在任何一种情况下,你都无法做到你想要的.你可能来的最接近的是声明你自己的类型.(编辑:我的原始代码有一个双字符串一个字符串......我现在把它改成了一个双字符串一个字符串.让我知道这个改变是不是你的想法.)

public final class DoubleAndString
{
    private final String stringValue;
    private final double doubleValue;

    public DoubleAndString(String stringValue, double doubleValue)
    {
        this.stringValue = stringValue;
        this.doubleValue = doubleValue;
    }

    public String getString()
    {
        return stringValue;
    }

    public String getDouble()
    {
        return doubleValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后创建一个ArrayList<DoubleAndString>或一个DoubleAndString[].

现在,这感觉有些香草 - 大概是双重和字符串值实际上有更大的含义 - 例如名字和分数.如果是这样,请将其封装在更恰当地描述配对的类型中.

至于排序 - 你可以制作DoubleAndString工具Comparable<DoubleAndString>- 但除非这是唯一有意义的自然顺序,我会写一个Comparator<DoubleAndString>:

public class DoubleComparator implements Comparator<DoubleAndString>
{
    public int compare(DoubleAndString ds1, DoubleAndString ds2)
    {
        return Double.compare(ds1.getDouble(), ds2.getDouble());
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用Collections.sort对数组进行排序ArrayList<DoubleAndString>Arrays.sort排序.


rog*_*sys 6

您可以使用ArrayList<Object>,然后您可以使用任何您喜欢的东西.封装double在一个Double对象中,当你检索对象时,instanceof用来检查它是否真的是a double或a String.

我必须说,这种"设计"不太可能赢得任何奖项.是否有可能重新考虑您正在考虑的问题的解决方案,看看您是否可以采用不同的方法?