在java中,是否存在类似于javascript对象类型的数据类型,我可以在其中存储类似javascript的内容。
这是一个对象,里面包含三个数组:
var myObject = {"smsBody": [], "totalSMS": [], "sender": []};
我可以将数据推送到该对象内的单个数组项:
myObject.totalSMS.push("5");
myObject.totalSMS.push("10");
然后可以循环遍历以从数组项中获取整个数据:
for (var i = 0; i < myObject.totalSMS.length; i++) {
alert(myObject.totalSMS[i]);
}
Java中有类似的内容吗?
答案 0 :(得分:1)
您所描述的内容可以描述为java中的数组数组。您可以使用ArrayList之类的集合来使其更具动态性。如果您正在寻找更通用的内容来存储不同类型的元素,您应该考虑使用inner class。
要参考您的示例,JAVA中的代码将是(提供所有数组仅包含整数):
ArrayList<ArrayList<Integer>> myObject = new ArrayList<ArrayList<Integer>>();
myObject.add(new ArrayList<Integer>());
myObject.add(new ArrayList<Integer>());
myObject.add(new ArrayList<Integer>());
myObject.get(0).add(5);
myObject.get(0).add(10);
for (Integer i : myObject.get(0))
System.out.println(i);
如果您想为馆藏命名,可以使用地图:
Map<String,ArrayList<Integer>> myObject = new HashMap<String,ArrayList<Integer>>();
myObject.put("smsBody",new ArrayList<Integer>());
myObject.put("totalSms",new ArrayList<Integer>());
myObject.put("sender",new ArrayList<Integer>());
myObject.get("totalSms").add(5);
myObject.get("totalSms").add(10);
for (Integer i : myObject.get("totalSms"))
System.out.println(i);
答案 1 :(得分:1)
这与您在Java中发布的代码一样接近:
Map<String, List<String>> myObject = new HashMap<>();
myObject.put("smsBody", new ArrayList<>());
myObject.put("totalSMS", new ArrayList<>());
myObject.put("sender", new ArrayList<>());
List<String> totalSMS = myObject.get("totalSMS");
totalSMS.add("5");
totalSMS.add("10");
for (String s : totalSMS) {
System.out.println(s);
}
请注意,存在相当多的差异,例如您不能使用myObject.totalSMS
之类的内容,而是需要使用字符串"totalSMS"
作为Map的键。 Java也有一个更方便的for-each循环,这意味着你不需要迭代元素的索引并单独访问它们(尽管你仍然可以通过元素索引循环遍历列表)。