java是存储各种变量的好方法吗?
Comparable w[] = new Comparable[5];
w[0] = 1;
w[1] = "string";
w[2] = 2.0;
这样好吗?事实上,它为什么有效(我只是随机尝试过)?可能是因为可比扩展了整数、字符串、双精度等。?那又怎样
你可以在下面搜索框中键入要查询的问题!
Comparable w[] = new Comparable[5];
w[0] = 1;
w[1] = "string";
w[2] = 2.0;
这样好吗?事实上,它为什么有效(我只是随机尝试过)?可能是因为可比扩展了整数、字符串、双精度等。?那又怎样
# 1 楼答案
如果你想不出做某事的好理由,那可能不是个好主意
数字和字符串实现可比性,但您的想法是正确的
在Java中可以做很多奇怪的事情,但大多数都没有用处
在这种情况下,它不是特别有用,因为对象之间不可比较。e、 g.阵列。排序(w);不行
# 2 楼答案
我觉得这不是个好主意。如果必须存储这样的“异构”集合,请使用
Object[]
。 将Comparable
指定为公共接口也会给出错误的建议,即可以对数组进行排序,这是错误的,因为不同的比较器无法协作# 3 楼答案
这是可行的,但没有多大意义
Integer
、String
和Double
确实实现了Comparable
接口,但是是以一种通用的方式实现的(即Integer
实现了Comparable<Integer>
、String
实现了Comparable<String>
等等)因此,如果你正试图实现这一目标,你将无法将
String
与Double
进行比较# 4 楼答案
使用类的接口定义要存储在数组或集合中的对象的常用属性
如果直接或不直接使用
compareTo
方法,例如通过对数组排序,请使用Comparable。如果不以实物为准,读者就不会那么困惑了。如果没有,请注意,选择Comparable而不是Object这不会以一种有用的方式限制数组中的对象,因为有许多类实现了它(而且它正在增长)但请注意,您很少需要在数组中存储字符串、双精度和整数。你必须这样做的事实表明你应该检查你的设计
# 5 楼答案
这将构造一组实现可比较接口的项。 所有标准类型的包装器都实现了这个接口,所以所有东西都可以存储在那里。 这样做的缺点是,compare方法用于在同一类的对象之间进行比较。把不同类别的物品放在这个容器里会破坏这个目的
因此,使用可比较的接口作为容器的基本类型可能不是一个好主意。因为这毫无意义
更好的选择是使用Object[],它是所有Java对象的超类型
# 6 楼答案
-所有
Wrapper Objects
实现Comparable
,这就是它的工作原理-此外,当您只需要根据一个参数进行排序时,Compariable是很好的,但是当您想要以多种方式进行排序时,最好使用
Comparator