无法将java集合转换为对象[]
需要帮助解决一个班级的问题!因此,我创建了一个名称数组,该数组被传递给Proj04Runner类中名为runA的方法。我需要创建一个这些名称的树集,将它们按自然升序排列,没有重复的值。然而,当我运行代码时,我得到一个错误,告诉我集合不能转换为对象[]
import java.util.*;
class Proj04{
static String[] names =
{"Don","don","Bill","bill","Ann","ann","Chris","chris"};
static Object[] myArray = new String[8];
public static void main(String args[]){
Proj04Runner runner = new Proj04Runner();
Random generator = null;
if(args.length != 0){
System.out.println("seed = " + args[0] );
generator = new Random(Long.parseLong(args[0]));
}else{
long seed = new Date().getTime();
System.out.println("seed = " + seed);
generator = new Random(new Date().getTime());
}
System.out.print("Input: ");
for(int cnt = 0;cnt < myArray.length;cnt++){
int index = ((byte)generator.nextInt())/16;
if(index < 0){
index = -index;
}
if(index >= 8){
index = 7;
}
myArray[cnt] = names[index];
System.out.print(myArray[cnt] + " ");
System.out.println();
myArray = runner.runA(myArray);
System.out.print("Intermediate Results: ");
for(int cnt = 0; cnt<myArray.length;cnt++){
System.out.print(myArray[cnt] + " ");
System.out.println();
}
import java.util.*;
class Proj04Runner{
Object[] myArray;
Collection ref;
Proj04Runner(){
public Collection runA(Object[] myArray){
this.myArray = myArray;
ref = new TreeSet();
for(int ct = 0; ct < myArray.length; ct++){
ref.add(String.valueOf(myArray[ct]));
}
return ref;
}
}
任何帮助都将不胜感激!谢谢大家!
# 1 楼答案
问题
让我们检查一下类型:
myArray
是Object[]
的类型runA
接受一个类型为Object[]
的参数并返回Collection
问题在于:
现在我们将
Object[]
(myArray
)提供给方法runner.runA()
,这是正确的。另一方面,我们返回Collection
,并试图将其分配给类型为Object[]
(myArray
)的变量,这是不正确的解决方案
现在你有很多选择来解决这种类型的疯狂
显而易见的两个问题是:
runA
返回Object[]
而不是Collection
return ref.stream().toArray()
myArray
类型为Collection
而不是Object[]
最后说明
不要使用“原始”类型
你说的不是
Collection
,而是什么的集合,例如整数集合Collection<Integer>
或字符串集合Collection<String>
int cnt
被声明两次变量
int cnt
在同一范围内声明了两次