1

これが私の状況です。私は8zone秒です。それらを建物内の部屋と考えてください。それぞれzoneが私が知らないカメラの数を持っています。たとえば、ゾーン 1 には 6 つのカムがあり、ゾーン 2 には 3 つのカムがある場合がcameraあります。これらのゾーン内にあるこれらのオブジェクトを追跡する必要があります。zone最初の次元には を含めることができ、2 番目の次元には を含めることができるため、2 次元リストを追加することを考えましたcamera。これどうやってするの?

とにかく、もっと良い方法があると思われる場合は、お知らせください

4

6 に答える 6

1

キーがゾーンで値がカメラのリストであるHashMapを使用します。

http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html

于 2013-03-22T19:23:14.430 に答える
1

キーが。であるsのHashMapを作成できます。ListZone

HashMap<Zone, List<Camera>>

于 2013-03-22T19:23:16.797 に答える
1

多数のカメラをメンバーに持つクラスゾーンを持ってみませんか?

public class Zone {

    private int numOfCameras;

    public Zone(int numOfCameras) {
        this.numOfCameras = numOfCameras;
    }  
}

そして、ゾーンのリストを簡単に作成できます。

List<Zone> zonesList = new ArrayList<Zone>();
zoneList.add(new Zone(6);
zoneList.add(new Zone(8);
.
.

等..

ゾーンオブジェクトにプロパティを簡単に追加してリストからそれらにアクセスできるため、マルチリストよりもこれが好きです。

ゾーンオブジェクトへのname/idプロパティを設定し、マップ内のidでゾーンをマップすることもできます。

于 2013-03-22T19:23:54.230 に答える
1

まあ、1 つのアプローチは、マップとリストを使用することです。

HashMap<Zone, ArrayList<Camera>> building = new HashMap<>();

ArrayList<Camera> zone1cameras = new ArrayList<>();
zone1cameras.add(camera1);
zone1cameras.add(camera2);
...

building.put(zone, zone1cameras);

しかし、すでにZoneオブジェクトがある場合は、次のようなものではないでしょうか

public class Zone
{
    // Members
    private ArrayList<Camera> cameras = new ArrayList<>();

    // Methods 
    public void registerCamera(Camera c){ cameras.add(c); }
    public List<Camera> getCameras(){ return cameras; }
}

そして、Zones を別のリストに保存できます。たとえば、次のようになります。

ArrayList<Zone> zones = new ArrayList<>();
zones.add(zone1);

夢中になりたい場合は、次のregisterCameraようなメソッドをチェーンできます。

public class Zone
{
    // Members
    private ArrayList<Camera> cameras = new ArrayList<>();

    // Methods 
    public Zone registerCamera(Camera c){ cameras.add(c); return this; }
    public List<Camera> getCameras(){ return cameras; }
}

これにより、次のようなことができます

ArrayList<Zone> zones = new ArrayList<>();
zones.add(new Zone().registerCamera(cam1).registerCamera(cam2).registerCamera(cam3));
于 2013-03-22T19:29:10.733 に答える
1

ZoneCameraそれ自体がクラスの場合HashMap、次のように使用できます。

Map<Zone,ArrayList<Camera>> map = new HashMap<Zone,ArrayList<Camera>>();
ArrayList<Camera> list1 = new ArrayList<Camera>();
list1.add(camera1);list1.add(camera2);
map.put(zone1,list1);
ArrayList<Camera> list2 = new ArrayList<Camera>();
 list2.add(camera1);list2.add(camera2);list2.add(camera3);
map.put(zone2,list2);
....
...

camera1、camera2 などは のオブジェクトですCamera。そして、zone1、zone2 .. などはのオブジェクトです。Zone
さらにカメラを追加したい場合は、zone1 に対して次のように処理できます。

ArrayList<Camera> list = map.get(zone1);
list.add(camera3);list.add(camera4);
map.put(zone1,list);
于 2013-03-22T19:29:29.793 に答える
0

Zone オブジェクトを作成するのはどうですか (特に、Zone に何か他のものが含まれる場合に役立ちます)。次に、コンストラクターで、カメラの数を渡すだけです。

public class Zone {

    private int numOfCameras;
    private int zoneNumber;

    public Zone(_numOfCameras, _zoneNumber) {
        numOfCameras = _numOfCameras;
        zoneNumber = _zoneNumber;
    }

    //getters and setters
    ...
}

ゾーンのリストを保持する必要がある場合は、ゾーンの配列をインスタンス化して配列に追加するだけです。

private Zone[] zones;

ゾーン内のカメラの数を調べるには、次のようにします (これは、ゾーンに順番に 1 ~ 8 の番号が付けられていることを前提としています)。

public int getNumberOfCamerasByZone(i){ //pass in the zone number you are wanting
    return zones[i].getNumberofCameras();
}
于 2013-03-22T19:48:51.283 に答える