【问题标题】:convert list into int array将列表转换为 int 数组
【发布时间】:2013-10-12 10:46:21
【问题描述】:

我想取回整数类型的洗牌数组,所以我写了这段代码,但它不工作......在这段代码中,我希望每次为 Scase 类的每个对象都有新值......但这必须从 5 开始, 50,100...

class Scase {

    int label;
    int value;

    public static int arr[] = {5,50,100};

    public static int[] toarr(List<Integer> list)
    {
        int[] ret = new int[list.size()];
        for (int i = 0; i < ret.length; i++)
            ret[i] = list.get(i);
        return ret;
    }

    public static void main(String args[])
    {
        Scase obj[] = new Scase[1];
        List<Integer> lst = new ArrayList<Integer>();

        lst = Arrays.asList(arr);

        Collections.shuffle(lst);

        int ar[];
        ar = toarr(lst);

        for(int i = 0; i <= 2; i++) {
            obj[i].value = ar[i];
        }
        System.out.println(obj[0].label + "  " + obj[0].value);
        System.out.println(obj[1].label + "  " + obj[1].value);
        System.out.println(obj[2].label + "  " + obj[2].value);
    }
}

【问题讨论】:

  • 请添加一个标签来指示您正在使用的语言(C#?Java?...?)。另外,这是关于列表数组转换还是关于洗牌?您可能需要修改您的问题标题。

标签: java arrays list shuffle


【解决方案1】:

不幸的是,由于 Java 处理原始类型、装箱、数组和泛型的性质,我不认为真的有更好的方法来做到这一点。特别是:

List&lt;T&gt;.toArray 不起作用,因为没有从 Integer 转换为 int 您不能使用 int 作为泛型的类型参数,因此它必须是一个特定于 int 的方法(或使用反射来做讨厌的诡计的方法)。 我相信有些库对所有原始类型都有这种方法的自动生成版本(即,有一个为每种类型复制的模板)。这很丑陋,但恐怕就是这样:(

即使 Arrays 类在泛型进入 Java 之前就已经出现,但如果它在今天被引入,它仍然必须包含所有可怕的重载(假设你想使用原始数组)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 2020-10-26
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    相关资源
    最近更新 更多