Mac*_*ado 0 java arrays increment
嗯,这种方法是管理一个接受列表作为参数的转换,但肯定看起来不可扩展.
List<Long> array_list_data= new ArrayList<>();
public void get_Data() {
long0 = array_list_data.get(0);
long1= array_list_data.get(1);
long2= array_list_data.get(2);
}
Run Code Online (Sandbox Code Playgroud)
之后,它将创建一个与long字段不同的类.
但是,如果我们必须将此数据扩展到此列表中的100个参数,该怎么办?
到目前为止我所做的是:
List<Long> array_list_data= new ArrayList<>();
public void get_Data() {
int k = 0;
long0= array_list_data.get(k);
long1= array_list_data.get(k++);
long2= array_list_data.get(k++);
}
Run Code Online (Sandbox Code Playgroud)
为什么递增k不是正确的方法呢?
k++执行后增量.换句话说,表达式的值是原始值k,然后k递增.它在调用方法之前仍然会增加,但作为参数传递的值是增量发生之前的值.换句话说,呼叫:
x = list.get(k++);
Run Code Online (Sandbox Code Playgroud)
相当于:
int tmp = k;
k = k + 1;
x = list.get(tmp);
Run Code Online (Sandbox Code Playgroud)
所以,如果你真的有:
memory_version = array_list_data.get(k++); // Calls with 0, then k=1
mains_voltage_min = array_list_data.get(k++); // Calls with 1, then k=2
mains_voltage_max = array_list_data.get(k++); // Calls with 2, then k=3
Run Code Online (Sandbox Code Playgroud)
那就没事了,相当于你的第一个代码.你目前的问题是你真的得到了:
memory_version = array_list_data.get(k); // Calls with 0, then k=0
mains_voltage_min = array_list_data.get(k++); // Calls with 0, then k=1
mains_voltage_max = array_list_data.get(k++); // Calls with 1, then k=2
Run Code Online (Sandbox Code Playgroud)
但是,我建议如果您使用集合作为字段对类中的数据进行建模,那么每个值的单独字段可能会更好.(当然,您可以通过从列表中提取数据来创建类的实例,但这是另一回事.)
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |