首页  >  文章  >  如何生成指定范围的 11 位序列号?

如何生成指定范围的 11 位序列号?

王林
王林转载
2024-02-12 14:27:05753浏览

问题内容

我正在使用给定的代码在列表视图中生成序列号,最多可达 11 位数字的特定范围。最多十位数字,生成的序列如 0333624140 至 0333624160(例如 0333624140,0333624141,0333624142,0333624143 等),但如果我们将所需的值更改为 11 位数字,如 03336241441 至 03336241450然后应用程序崩溃。

btngenerate.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        int value1;
        int value2;
        value1 = Integer.parseInt(txtfirst.getText().toString());
        value2 = Integer.parseInt(txtsecond.getText().toString());
        for(int i=value1;i<=value2;i++){
            list.add(""+i);
            li.setAdapter(arrayAdapter);
        }

    }
});

解决方法

我自己并在大家的帮助下解决了我需要的解决方案。我将其展示在这里,以便其他人可以获得有关它的信息。不管怎样,我发自内心地感谢你们~

btngenerate.setOnClickListener(new View.OnClickListener() {
    @SuppressLint("DefaultLocale")
    @Override
    public void onClick(View view) {
        try {
            long value1;
            long value2;
            value1 = Long.parseLong(txtfirst.getText().toString());
            value2 = Long.parseLong(txtsecond.getText().toString());

            for(Long i = (Long) value1; i<=value2; i++) {
                list.add(String.format("%011d", i));
                li.setAdapter(arrayAdapter);
            }

        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
    }
});

对于如何编写此代码来说,这是一个完全破碎的想法。您正在创建一个数组,其中可以包含 11 位长的每个数字。那是 110 亿件物品。即使每个对象只占用 8 个字节(4 个用于值,4 个用于引用。实际情况会比这个多),这也是 880 亿字节,即大约 9.5 gb。那永远不会适合记忆,在那之前你就会 oom way。

有很多方法可以做到这一点。您的适配器不需要包含其中每个项目的数组,因为它是一个连续范围,它只需要开始和结束索引,并且可以根据开始索引和偏移量计算每个索引的值。但是拥有每个值的列表是行不通的。

以上是如何生成指定范围的 11 位序列号?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除