用于存储多种数据类型的多维数组

时间:2011-05-11 10:20:12

标签: java arrays

我知道php有点。和java很少。

我正在创建一个小应用程序来搜索文本区域中的文本并将结果存储在数组中。

PHP中的数组将如下所示。

array(
    "searchedText" => "The text that is searched",
    "positionsFound" => array(12,25,26,......),
    "frequencies" => 23 //This is total words found divided by total words
);

但是,java不支持具有多种数据类型的数组。在上面的数组中,只有第二个元素“positionFound”具有可变长度。

稍后我需要遍历此数组并创建一个包含所有上述元素的文件。

请指导我

1 个答案:

答案 0 :(得分:3)

Java确实支持对象。您必须定义类似

的类
class MyData {
    String searchedText;
    Set<Integer> positionsFound;
    int frequencies;
}

List<MyData> myDataList = new ArrayList<MyData>();
// OR
MyData[] myDataArray = new MyData[number];

您可以使用此结构来保存您的数据。还有其他有用的方法,比如构造函数和toString(),我建议你用IDE来生成它们。

将此数据写入文件时,您可能会发现JSon是一种自然格式。


我建议你看看GSon这是一个不错的JSon库。

GSon文档中,这是一个示例

class BagOfPrimitives {
  private int value1 = 1;
  private String value2 = "abc";
  private transient int value3 = 3;
  BagOfPrimitives() {
    // no-args constructor
  }
}

(序列化)

BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj); 

==&GT; json是{“value1”:1,“value2”:“abc”}

请注意,您无法使用循环引用序列化对象,因为这将导致无限递归。

(反序列化)

BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);  

==&GT; obj2就像obj