1

HashMap<Integer, Point3d>次のような形式のリストがあります。

 {
   {key1,(x1,y1,z1)},
   {key2,(x2,y2,z2)},
   {key3,(x1,y3,z3)},
   {key4,(x1,y4,z4)},
   {key5,(x5,y5,z5)},
   ..
 }

最初に、すべてのポイントから最初の要素を分離し、最後に結果の長さの{x1,x2,x1,x1,x5}ように重複を削除したい{x1,x2,x5}{x1,x2,x5}.size()

同様に、 の 2 番目と 3 番目の要素に実装したいと思いPointsます。

allot を試しましたが、とにかく見つかりませんでした。HashMapに基づいて値を取得できないためですindex。に基づいて値を取得できますが、 hashMap はわかりKey valueません。Keyvalues

以下の方法で試しました。

  public int xSideLength(HashMap<Integer, Point3d> coOrdinates) {
    int length=0;
    Set<Integer> keyValues=coOrdinates.keySet();
    Integer[] array=(Integer[]) keyValues.toArray();
    for (int index = 0; index < array.length; index++) {
        //logical code
    }
    return length;
}

誰でも私に提案できますか。

4

5 に答える 5

2

次のことについてどう思いますか。

Set<Integer> values = new HashSet<Integer>();
for(Point3d point : coordinates.values()) {
    values.add(point.x());
}

return values.size();
于 2013-09-30T11:42:43.497 に答える
0

次の手順に従うことができます。

  1. の値をカスタムComparatorHashMapを使用して Set に入れます。
  2. 比較メソッドを実装します。
  3. 設定サイズを返します。

スニペットは次のようになります。

public int xSideLength(HashMap<Integer, Point3d> coOrdinates) {
    int length=0;
    Set<Point3d> values = new TreeSet<Point>(new Comparator<Point3d>() {
        @Override
        public int compare(Point3d e1, Point3d e2) {
            return e1.getX().compareTo(e2.getX());
        }
    });
    values.addAll(coOrdinates.values());
    return values.size();
}
于 2013-09-30T11:37:37.393 に答える
0

次のようなキーを使用して、マップから要素を取得できます。

Set<Integer> keyValues = coOrdinates.keySet();
for (Integer key : keyValues) {
    Point3d point = coOrdinates.get(key);   
    // Your logical code goes here.
}
于 2013-09-30T11:40:55.537 に答える
0
public static void zz() {
    Map<String,Point3d> m = new HashMap<String,Point3d>();

    m.put("k1", new Point3d(1.0, 1.0, 4.0));
    m.put("k2", new Point3d(2.0, 2.0, 2.0));
    m.put("k3", new Point3d(1.0, 3.0, 2.0));
    m.put("k4", new Point3d(1.0, 3.0, 4.0));
    m.put("k5", new Point3d(5.0, 3.0, 2.0));

    Set xvals = new HashSet();
    Set yvals = new HashSet();
    Set zvals = new HashSet();

    double[] coords = new double[3];
    for (Point3d p : m.values()) {
        p.get(coords);
        xvals.add(coords[0]);
        yvals.add(coords[1]);
        zvals.add(coords[2]);
    }

    System.out.println("# unique x: " + xvals.size() + ": " + xvals);
    System.out.println("# unique y: " + yvals.size() + ": " + yvals);
    System.out.println("# unique z: " + zvals.size() + ": " + zvals);
    }
于 2013-09-30T12:06:38.537 に答える
-1
for (Map.Entry<Integer, Point3d> entry : coOrdinates.entrySet()) {
    Point3d point = entry.getValue());
}
于 2013-09-30T11:39:29.420 に答える