Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组到列表转换和类型转换_Java_Arrays_Algorithm_List_Type Conversion - Fatal编程技术网

Java 数组到列表转换和类型转换

Java 数组到列表转换和类型转换,java,arrays,algorithm,list,type-conversion,Java,Arrays,Algorithm,List,Type Conversion,动机: 我正在创建一个android应用程序,它可以执行以下操作 读取Point类型的输入点-自定义类。 计算最外面的点。 从osmdroid库中绘制需要输入GeoPoint类型的多边形,并将这些点作为凸多边形的顶点。 问题: 我让算法运行起来。但是转换数据类型时存在问题 输入是一个点阵列点是一个自定义类 geoPoints = new Point[7]; geoPoints[0] = new Point(new GeoPoint(8.180992, 77.336551)); 但是绘制多边形的

动机:

我正在创建一个android应用程序,它可以执行以下操作

读取Point类型的输入点-自定义类。 计算最外面的点。 从osmdroid库中绘制需要输入GeoPoint类型的多边形,并将这些点作为凸多边形的顶点。 问题:

我让算法运行起来。但是转换数据类型时存在问题

输入是一个点阵列点是一个自定义类

geoPoints = new Point[7];
geoPoints[0] = new Point(new GeoPoint(8.180992, 77.336551));
但是绘制多边形的osmdroid函数需要List作为输入

List<GeoPoint> gPoints;
polygon.setPoints(gPoints);
但我不知道如何计算返回类型

所以,当我运行代码时。我得到以下错误

error: incompatible types: inference variable T has incompatible bounds
equality constraints: GeoPoint
lower bounds: Point
where T is a type-variable:
T extends Object declared in method <T>asList(T...)
注:

仅使用列表或仅使用数组是不可能的

polygon.setPoints(geoPoints)    //needs List<GeoPoint> in callingFunction
Arrays.sort(points);            //requires array of Points in ConvexHull

提供的一切。我怎样才能解决这个问题?任何形式的帮助都会非常有用。先谢谢你

我不确定,如果我没弄错的话,但基本上你的问题归结为一个事实,你有一个点对象数组,但需要一个地质点对象列表,对吗?点和地点之间没有关系,所以一个点不延伸另一个点

那么,为什么不在绘制多边形之前将点对象转换回地质点对象呢

您可以映射流中的类型:

ConvexHull cx = new ConvexHull(geoPoints);
Point C1[] = cx.getConvexHull();

polygon.setPoints(Arrays.stream(C1).map(p -> new GeoPoint(p.getX(), p.getY())).collect(Collectors.toList());
或者使用for循环:


是否可以更改点类以扩展GeoPoint?然后你就可以通过名单了。不是真的-对不起!你读过这一页了吗?与其说是减少发布的代码数量,不如说是创建尽可能小的示例(可能是在一个全新的项目中),这可以归结为具体问题,而不是其他问题。阅读也是一个好主意——特别是假装你正在和一个忙碌的同事交谈——当他们免费提供帮助时,没有人有时间阅读那么多代码。这个调用需要API 24。我现在16岁。我无法将最小值从16改为16,因为我们的目标设备运行的是较旧版本的android。有什么解决方法吗?使用for循环将点阵列转换为地质点对象列表。我已编辑了答案并添加了for循环替代方案。感谢您的快速回复。你的代码实际上解决了我的问题。我已经做了两天了。我认为这是公认的答案。谢谢。离题,但是,有没有办法为S.O.提供一个桌面应用程序。我收到通知有点晚了。
polygon.setPoints(geoPoints)    //needs List<GeoPoint> in callingFunction
Arrays.sort(points);            //requires array of Points in ConvexHull
ConvexHull cx = new ConvexHull(geoPoints);
Point C1[] = cx.getConvexHull();

polygon.setPoints(Arrays.stream(C1).map(p -> new GeoPoint(p.getX(), p.getY())).collect(Collectors.toList());
ConvexHull cx = new ConvexHull(geoPoints);
Point C1[] = cx.getConvexHull();

List<GeoPoint> points = new ArrayList<GeoPoint>(C1.length);
for (int i = 0; i < C1.length; ++i) {
  points.add(new GeoPoint(C1[i].getX(), C1[i].getY()));
}
polygon.setPoints(points);