我正在尝试存储一个名称以及特定视图的左,右,上,下维度。我尝试使用hashmap,仅存储(键,值)。请有人告诉我应该使用哪个系列来满足我的要求。
for (int i = 0; i < numberOfFaceDetected; i++) {
android.media.FaceDetector.Face face = myFace[i];
Log.i("FACE","FACE TAGGING : "+myFace[i].toString());
String facename = myFace[i].toString();
PointF myMidPoint = new PointF();
face.getMidPoint(myMidPoint);
myEyesDistance = face.eyesDistance();
dx = (int) (myMidPoint.x - myEyesDistance);
dy = (int) (myMidPoint.y - myEyesDistance);
dz = (int) (myMidPoint.x + myEyesDistance);
dt = (int) (myMidPoint.y + myEyesDistance);
//here i want to store facename,dx,dy,dz,dt values in same collection
canvas.drawRect((int) dx, dy, dz, dt, myPaint);
}
答案 0 :(得分:5)
Map<YourKeyClass, YourValuesClass>
怎么样?
例如
class YourValuesClass
{
int dx, dy, dz, dt;
// getters and setters
// ...
}
Map<String,YourValueClass> map = new HashMap<String,YourValueClass>();
干杯,
答案 1 :(得分:1)
我更喜欢制作一个代表尺寸的物体(三个值) 并使用hashmap key = facename value = faceDimension(您的对象) 为了满足面向对象编程的概念;)
public class FaceDimension {
private int dx;
private int dy;
private int dz;
private int dt;
public FaceDimension(int dx, int dy, int dz, int dt) {
super();
this.dx = dx;
this.dy = dy;
this.dz = dz;
this.dt = dt;
}
}
答案 2 :(得分:1)
我认为使用HashMap
是您最好的选择。
答案 3 :(得分:1)
我建议你使用HashMap,但因为你有4个值对应一个键(faceName)。
创建一个数据传输对象(DTO
),其中包含四个属性来传输数据并将其放入地图,例如hashMap.put("myface",myDto);
例如,
class Position
{
private int left;
private int right;
private int top;
private int bottom;
public int getLeft() {
return left;
}
public void setLeft(int left) {
this.left = left;
}
public int getRight() {
return right;
}
public void setRight(int right) {
this.right = right;
}
public int getTop() {
return top;
}
public void setTop(int top) {
this.top = top;
}
public int getBottom() {
return bottom;
}
public void setBottom(int bottom) {
this.bottom = bottom;
}
}
Map<String, Position>
faceMap = new HashMap<String, Position>();
在for循环中,
Position facePosition = new Position();
facePosition.setLeft(((int) (myMidPoint.x - myEyesDistance)));
设置所有属性
然后faceMap.put("myface",facePosition);
答案 4 :(得分:0)
我尝试使用hashmap只存储(键,值)
是的,但是value
可以是任何类型的吗?因此,在List
中使用HashMap
作为值。因此,您可以存储多个值..
Map<Integer, List<String>> mapping = new HashMap<Integer, List<String>>();
我<{>>假定类型的key
为Integer
,值类型为String
..您可以使用合适的类型..
或者,如果您有4-fixed
个值,我刚刚看到您 ..您可以创建Custom Type
..只需要一个包含所有这些值的类,并且使用 HashMap<Integer, YourCustomClass>
public class MyDimension {
private int top;
private int bottom;
private int right;
private int left;
// Your Constructor
// Use only getters, to make the object immutable..
}
现在,使用 HashMap<Integer, MyDimension>
与MyDimension
对象存储所有4个值。