Java 1.4.2中将ArrayList转换为数组

3

我使用的是旧版Java,因此无法将我的数组列表转换为字符串,想知道如何成功地将我的arrayList转换为数组。以下是我的代码:

    String racesArray[] = request.getParameterValues("races");
    ArrayList races = new ArrayList();

    for (int i = 0; i < racesArray.length; ++i) {
        String s = racesArray[i];
        if (s != null && s.length() > 0) {
            races.add(s);
        }
    }
    final String[] racesArray1 = (String[])races.toArray(new Object[races.size()]);

上述代码给我一个类转换异常。
编辑:更改以避免变量混淆。

1
你从一个数组开始。为什么需要中间步骤?但是你的解决方案有什么问题? - Sotirios Delimanolis
@sotiriosDelimanolis 我需要删除空值和空字符串,但我需要将其放在一个数组中以便发送到数据库。原始数组中的变量来自表单。 - Mr Man
请查看字符串数组中的字符串。它们不是“Strings”。 - JNL
3个回答

4

问题出现在第一行

你的 String 数组 不包含 字符串

String[] racesArray = {raceWhite, raceBlack, raceInd, raceAsian, raceHaw, raceInter, raceUnknown}

将其声明为“字符串”。
String[] racesArray = {"raceWhite", "raceBlack", "raceInd", "raceAsian", "raceHaw"};

问题二:

您需要创建一个new String[]而不是new Object[]

final String[] racesArray1 = (String[])races.toArray(new String[races.size()]);

记住,字符串是一个对象。而对象并不是由字符串扩展而来的



它们是来自表单的字符串变量,我希望这样更容易理解,而不必费力去浏览所有的“getParameterValues”繁琐内容。 - Mr Man
我相信那些是变量,因为把它们作为字符串没有任何意义作为“种族”。所以在某个我们看不到的地方:String raceWhite = "White";等。 - Zebby Dee
1
由于他正在使用Java 1.4,我认为他不能使用ArrayList<String>。泛型只在1.5之后才出现 :) - Thirumalai Parthasarathi
@BlackPanther 谢谢,问题中漏掉了1.4。 - JNL

4

试试这个:

String[] racesArray = { "raceWhite", "raceBlack", "raceInd", "raceAsian", "raceHaw", "raceInter", "raceUnknown" };
List races = Arrays.asList(racesArray);
String[] racesArray1 = (String[]) races.toArray(new String[races.size()]);

请注意最后一行:new String而不是new Object——这是您的问题的主要原因。
祝您在Java 1.4.2中好运:)我推荐Joshua Bloch的《Effective Java》第一版。它适用于Java 1.4,并涉及每天编程的最重要方面。

1
你可以这样做:

您可以这样做:

int countNull = 0;
for(String s : racesArray)
    if(s == null)
        countNull++;

int i = 0;
String arr = new String[racesArray.length-countNull];
for(String s : racesArray) {
    if(s != null) {
        arr[i++] = s;
    }
}

这是行不通的,因为问题中的代码是要从字符串[]中消除空值。而你的代码只是对数组进行了复制。 - Thirumalai Parthasarathi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接