名前、アドレス、ポート番号などのUDPパケットからのデータを保存する必要があります。私はもともとこれを行うために3つの配列リストを使用しましたが、これはあまりにも問題のようです。代わりに、キーにハッシュマップを使用することを考えました-値の整列ですが、これは、名前が独自のハッシュマップまたは配列リストに含まれることを意味します。
このすべてのデータを1つのコレクション/コンテナー/配列に格納するための優れた効率的な方法はありますか?
名前、アドレス、ポート番号などのUDPパケットからのデータを保存する必要があります。私はもともとこれを行うために3つの配列リストを使用しましたが、これはあまりにも問題のようです。代わりに、キーにハッシュマップを使用することを考えました-値の整列ですが、これは、名前が独自のハッシュマップまたは配列リストに含まれることを意味します。
このすべてのデータを1つのコレクション/コンテナー/配列に格納するための優れた効率的な方法はありますか?
属性名、アドレス、およびポート番号を使用して 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を使用する必要があります:マップ。次に、そのKeyクラスに対してhashCodeとequalsを正しく実装します。
順次アクセスが必要な場合は、順序を保存する実装としてTreeMapを使用できます。ただし、キーはComparableである必要があります。そうでない場合は、コンパレータを提供する必要があります。
一連のアイテムがある場合は、リストの使用を検討してください。
それが役に立てば幸い!
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);