Java:数据类型类似于javascript对象?

时间:2014-05-05 08:13:28

标签: java javascript android

在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中有类似的内容吗?

2 个答案:

答案 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循环,这意味着你不需要迭代元素的索引并单独访问它们(尽管你仍然可以通过元素索引循环遍历列表)。