use*_*963 1 java arrays arraylist multidimensional-array
我正在学习Java,并试图围绕这些数据结构.我来自Python/PHP所以我习惯于动态调整数组大小,并能够在一个数组中存储多种数据类型.
我如何才能最好地存储这些数据?假设我不知道我将拥有多少行,但我知道每行将包含2列数据.一列是字符串,另一列是双列.
伪代码示例如果我有3行:
array(array("description1", 10.00),
array("description2", 12.00),
array("description3", 14.00));
Run Code Online (Sandbox Code Playgroud)
然后,我想循环遍历数组以处理数据,如:
foreach(rows as row){
myStringVal = row[0]; //on first iteration would be "description1"
myIntVal = row[1]; //on first iteration would be 10.00
... do something with the values ...
}
Run Code Online (Sandbox Code Playgroud)
我想我需要创建一个包含数组的arraylist,但是我不能在java数组中存储字符串和双精度数,所以我该怎么办?我是否使用地图,并将其视为数组?例如,我是否创建了一个映射,其中第一个元素是每行的数字ID,第二个元素是字符串值,第三个元素是double值,然后我使用循环来增加计数器并抓住每一行从地图使用数字ID>
真的很困惑这将如何工作.有什么建议?谢谢!
你不是存储"不同类型的值",你存储的是编码"元组"的语义数据,而是使用非Java概念将其粘贴在数组中.不要这样做,而是使用C/C++/Java概念将链接数据编码为结构/对象:
// our "struct"esque class for the linked data we're handling
class MyObject {
String description;
float value;
Public MyObject(String description, float value) {
this.description = description;
this.value = value;
}
}
// build our list of objects
ArrayList<MyObject> mylist = new ArrayList<MyObject>();
mylist.add(new MyObject("description1", 10));
mylist.add(new MyObject("description2", 12));
mylist.add(new MyObject("description3", 14));
...
// and then we iterate
String d; float v;
for(MyObject m: mylist) {
d = m.description;
v = m.value;
...
}
Run Code Online (Sandbox Code Playgroud)