是否可以拥有包含两种不同类型数据的数组?我想要一个包含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排序.
您可以使用ArrayList<Object>,然后您可以使用任何您喜欢的东西.封装double在一个Double对象中,当你检索对象时,instanceof用来检查它是否真的是a double或a String.
我必须说,这种"设计"不太可能赢得任何奖项.是否有可能重新考虑您正在考虑的问题的解决方案,看看您是否可以采用不同的方法?
| 归档时间: |
|
| 查看次数: |
24862 次 |
| 最近记录: |