Java 访问ArrayList中对的值

Java 访问ArrayList中对的值,java,Java,如何将最后添加的元素传递给ArrayList,将ArrayList中的I元素传递给HaversinedDistance方法,以及如何在HaversinedDistance方法中从它们获取lat1、lat2、long1和long2 我想遍历列表,以确定请求的发送者是否位于列表中某个元素附近 测试等级: @Path("/test") public class Test { private static ArrayList<LatLong> latLongList = new

如何将最后添加的元素传递给ArrayList,将ArrayList中的I元素传递给
HaversinedDistance
方法,以及如何在
HaversinedDistance
方法中从它们获取lat1、lat2、long1和long2

我想遍历列表,以确定请求的发送者是否位于列表中某个元素附近

测试等级:

@Path("/test")

public class Test {

    private static ArrayList<LatLong> latLongList = new ArrayList<>();

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public Response storeData(Data data) {

        String macD = data.getMac();
        int routeD = data.getRoute();
        float latD = data.getLatitude();
        float longD = data.getLongitude();

        // Add the lat and Long to the ArrayList.
        latLongList.add(new LatLong(latD, longD));

        int size = latLongList.size();
        if (size > 1) {

            for (int i = 0; i < latLongList.size(); i++) {

                double distance = haversineDistance(latLongList.get(i),
                        latLongList.get(latLongList.size() - 1));
                if (distance > 4) {
                    processData(macD, routeD, latD, longD);
                } else {
                    return null;
                }
            }
        } else {

            processData(macD, routeD, latD, longD);
        }

        return Response.status(201).build();
    }

    private void processData(String macD, int routeD, float latD, float longD) {
        Database db = new Database();
        db.insertData(macD, routeD, latD, longD);
    }

    private double haversineDistance(ArrayList<LatLong> x, ArrayList<LatLong> y) {
        return 0;

    }

}
@Path(“/test”)
公开课考试{
私有静态ArrayList latLongList=新ArrayList();
@职位
@使用(MediaType.APPLICATION_JSON)
公共响应存储数据(数据){
字符串macD=data.getMac();
int routeD=data.getRoute();
float latD=data.getLatitude();
float longD=data.getLongitude();
//将lat和Long添加到ArrayList。
latLongList.add(新LatLong(latD,LONG));
int size=latLongList.size();
如果(大小>1){
对于(int i=0;i4){
processData(macD、routeD、latD、longD);
}否则{
返回null;
}
}
}否则{
processData(macD、routeD、latD、longD);
}
返回Response.status(201.build();
}
私有void processData(字符串macD、整型路由、浮点latD、浮点LONG){
数据库db=新数据库();
db.insertData(macD、routeD、latD、longD);
}
专用双HaversinedDistance(ArrayList x,ArrayList y){
返回0;
}
}

如果您希望您的方法
具有相对距离
来计算两点之间的距离,您应该设计方法来接受两点,而不是两点阵列列表。由于点由
LatLong
对象表示,因此应将方法更改为:

private double haversineDistance(LatLong x, LatLong y) {
    double xLat = x.getLatitude();
    double xLng = x.getLongitude();
    double yLat = y.getLatitude();
    double yLng = y.getLongitude();

    // compute haversine distance
    double d = ...;

    return d;
}

方法
HaversinedDistance(…)
需要两个点列表,这是故意的吗?我想,haversine公式只计算两个单点之间的距离。@isnit2bad:我可以在for lood中传递声明变量
lat1,lat2,long1,long2
,但是我如何从ArrayList元素中获取它们呢?同样:你的方法
HaversinedDistance(…)
有两个参数,都是列表。这就是你想要的吗?如果它不起作用,我想把四个参数传递给它。四个?我以为你想通过两个点(两个LatLong类型的对象)?