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

标签 java android arrays

我正在使用给定的代码在 ListView 中生成序列号,最多可达 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);
        }

    }
});

最佳答案

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

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

关于java - 如何生成指定范围的 11 位序列号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77550641/

相关文章:

c - 使用函数查找数组中的最大值

arrays - 不能在不可变值 : function call returns immutable value - not sure why value is immutable 上使用可变成员

android - 打开带附件的短信应用程序

android - Google Analytics 不生成配置文件,Firebase 冲突

java - 在android studio项目中添加Sqlite4java

java - 使用 replaceAll 替换具有可变数量空格的字符串

c - 函数调用期间的内存管理

java - Comparator.reversed() 不使用 lambda 进行编译

java - 如何创建一个获取 POJO 集合的服务方法

java - 无法将选定的对象解析为 int (JOptionPane)