2012-04-18 4 views
0

名前、アドレス、ポート番号などのUDPパケットからデータを保存する必要があります。私はもともとこれを行うために3つの配列リストを使用しましたが、これはあまりにも多くの問題のようです。 代わりに私はそれがキー値の行のためにハッシュマップを使用すると思ったが、これは、名前が独自のハッシュマップまたは配列リストに含まれることを意味します。データの保存方法がわからない

このすべてのデータを1つのコレクション/コンテナ/アレイに格納する方法はありますか?

答えて

4

てみてください、このようなものを使用する:

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; 
} 
} 

をそして使用:MyPacket:

List<UdpData> AllData; 
0

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); 
5

属性名、アドレス、ポート番号でPOJOを作成します。それらをすべて同じコレクションに追加します。

+0

あなたは私に答えてくれる: –

+0

@LiorBarnea確かにあなたの答えは良いです。 +1 –

1

あなたは、パケットからの情報を持っており、それが構造化されます場合は、カスタムオブジェクトを使用します。必要なすべてのプロパティを使用します。

独自のキーからそのオブジェクトを取得する必要がある場合は、マップを使用します。マップ例。次に、MyPacketの識別キー(例でユーザーコードなど)を使用して各MyPacketを保存/取得できます。

複雑なキーが必要な場合は、キーに独自のPojoを使用する必要があります。次に、正しく実装し、そのKeyクラスに対してhashCodeとequalsを実装します。

シークエンスアクセスが必要な場合は、順序を保存する実装としてTreeMapを使用できます。しかし、あなたの鍵はComparableか、Comparatorを提供する必要があります。

一連のアイテムがある場合は、リストの使用を検討してください。

希望すると助かります!

関連する問題