簡體   English   中英

不確定如何存儲數據

[英]unsure about how to store data

我必須存儲來自UDP數據包的數據,例如名稱,地址和端口號。 我最初使用3個數組列表來執行此操作,但這似乎太麻煩了。 取而代之的是,我想到了使用Hashmap作為鍵-值列表,但這意味着名稱將包含在其自己的哈希圖或數組列表中。

是否有一種良好,有效的方式將所有這些數據存儲在一個集合/容器/陣列中?

用屬性名稱,地址和端口號創建一個POJO。 將它們全部添加到同一集合中。

嘗試使用這樣的東西:

public class UdpData {
private String name;
private String address;
private int port;
public UdpData(String name, String address, int port) {
    super();
    this.name = name;
    this.address = address;
    this.port = port;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getAddress() {
    return address;
}
public void setAddress(String address) {
    this.address = address;
}
public int getPort() {
    return port;
}
public void setPort(int port) {
    this.port = port;
}
}

然后使用:

List<UdpData> AllData;

如果您有數據包中的信息並且結構化,請使用自定義對象:MyPacket。 具有您需要的所有屬性。

如果您需要從唯一鍵中檢索該對象,請使用地圖。 通過示例地圖。 然后,您可以使用其標識密鑰(例如,用戶代碼或其他方式)保存/檢索每個MyPacket。

如果需要復雜的鍵,則應使用自己的Pojo作為鍵:Map。 然后正確實現hashCode並等於該Key類的值。

如果需要順序訪問,可以將TreeMap用作節省順序的實現。 但是您的密鑰應該可比,或者您必須提供一個比較器。

如果您有一系列項目,請考慮使用列表。

希望能幫助到你!

您可以使用List而不包含Map 像這樣:

List<Map<String,String>> container = new ArrayList<Map<String,String>>();
...
Map<String,String> currentEntry = new HashMap<String,String>();
currentEntry.put("name", name);
...
container.add(currentEntry);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM