我有一个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()
我想以同样的方式实现Points
的第二和第三个元素。
我尝试过分配,但我没有找到。因为我们无法根据HashMap
从index
检索值。我们可以根据Key value
检索值但是我不知道Keyvalues
hashMap。
我尝试了以下方式。
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;
}
任何人都可以建议我。
答案 0 :(得分:2)
您如何看待以下内容:
Set<Integer> values = new HashSet<Integer>();
for(Point3d point : coordinates.values()) {
values.add(point.x());
}
return values.size();
答案 1 :(得分:0)
您可以按照以下步骤进行操作
HashMap
的值放入带有自定义Comparator的设置中。该片段如下所示,
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();
}
答案 2 :(得分:0)
您可以使用以下键从地图中获取元素:
Set<Integer> keyValues = coOrdinates.keySet();
for (Integer key : keyValues) {
Point3d point = coOrdinates.get(key);
// Your logical code goes here.
}
答案 3 :(得分: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);
}
答案 4 :(得分:-1)
for (Map.Entry<Integer, Point3d> entry : coOrdinates.entrySet()) {
Point3d point = entry.getValue());
}