java中的多维数据结构

时间:2012-09-27 18:43:14

标签: java arrays data-structures map jax-ws

我需要创建一个具有以下语法的数据结构:

[
 status: "success",
 statusDescription: "statusDescription"
 count: "5",
 states: [
  [stateId: "1", stateDescription: "1 description"],
  [stateId: "2", stateDescription: "2 description"],
  [stateId: "3", stateDescription: "3 description"],
  [stateId: "4", stateDescription: "4 description"],
  [stateId: "5", stateDescription: "5 description"]

 ]
]

我不确定如何在Java中这样做。我正在尝试使用ArrayLists和Maps的各种组合,但是不能完全理解它。

编辑:我实际上需要返回此数据类型作为对JAX-WS @WebMethod调用的响应。创建一个单独的类,尤其是具有List元素的类会导致问题。

7 个答案:

答案 0 :(得分:5)

建立自己的班级。请。

class Foo {
  private final String status;
  private final String statusDescription;
  private final int count;
  private final List<State> states;
}

class State {
  private final int stateId;
  private final String stateDescription;
}

答案 1 :(得分:2)

class Response {
   private boolean success;
   private String statusDescription; 
   private List<State> states;
}

class State {
   private int id;
   private String description;
}

答案 2 :(得分:0)

使用数组[或ArrayList]状态定义一个类。

答案 3 :(得分:0)

?做你自己的课。

statusstatusDescription是您班级的字符串属性。

count是一个整数属性(如果需要,可以是String)。

states可以是枚举,地图或二维数组。无论什么适合。

答案 4 :(得分:0)

为此你可以创建一个类,如

        class A

     {
       private int statusId;
        private String Description;
        private int count;
      }

现在根据您的要求创建数据结构,并将A类对象添加到该数据结构中。

答案 5 :(得分:0)

我会这样写:

public class Whatever {
    private Status status;
    private String statusDescription;
    private int count;
    private List<Map<int,String>> states;
}    

或者这个:

public class Whatever {
    private Status status;
    private String statusDescription;
    private int count;
    private List<State> states;
} 

状态和状态是枚举。由你决定。我认为状态有限

答案 6 :(得分:0)

设计真的很糟糕,但你想要的却是:

public static void main(String[] args) {
    HashMap<String, Object> hashMap = new HashMap<String, Object>();
    hashMap.put("status", "success");
    hashMap.put("statusDescription", "statusDescription");
    hashMap.put("count", "5");
    List<Object> list = new ArrayList<Object>();
    hashMap.put("states", list);
    for (int i = 1; i < 5; i++) {
        HashMap<String, String> hashMapInternal = new HashMap<String, String>();
        hashMapInternal.put("stateId", String.valueOf(i));
        hashMapInternal.put("stateDescription", i + " description");
        list.add(hashMapInternal);
    }
}