我想创建一个名为Product(Listproducts)的列表对象,其中Product包含以下成员:
public class Product {
private Double price;
private String title;
private String description;
private List<Point>points;
...
}
Point是另一个包含纬度和经度的对象:
public class Point{
Double lat;
Double lng;
...
}
在应用程序中,我首先必须从XML文件创建列表列表产品,然后在地图上显示产品。一个产品可以位于多个位置。 有谁知道什么是最合适的方式来创建结构(列表或链表),这是最容易迭代并能够链接列表?
逻辑应该按以下方式工作: 1.从列表中读取每个点 2.检查哪个产品属于该点 3.在地图上显示产品信息
谢谢!
答案 0 :(得分:3)
为什么不创建一个Map,其中键是产品,值是Points列表。
Map<Product, List<Point>> productPoints = new HashMap<Product, List<Point>>();
for (Product prod: productPoints) {
for (Point point : productPoints.get(prod)) {
// construct the point and add the product info to the point
}
}
如果需要,您还可以按产品轻松过滤地图上的点。
或者如上所述使用List接口,以便稍后可以使用最少的代码更改来更改实现。
List<Product> products = new ArrayList<Product>();
for (Product prod : products) {
for (Point point : prod.getPoints()) {
// construct the point and add the product info
}
}
答案 1 :(得分:2)
ArrayList
的{{1}}就足够了。
但您的算法最好以Product
为中心,而不是以Product
为中心。
答案 2 :(得分:1)
任何实现Iterable
的类(从Iterator
返回Collections Framework)都可以使用Java 1.5中引入的for-each
语法方便地进行迭代。您的顶级系列将是
List<Product> products = new ArrayList<Product>();
你可以像这样迭代它:
for (Product p : products) { ... }
通过使用接口类型List
,您可以根据需要更改为另一个List
实现。
答案 3 :(得分:0)
其中任何一个都完全没问题:
List<Product> products = new ArrayList<Product>();
或
int numProducts = DEFAULT_VALUE; // Have to know this in advance.
Product [] products = new Product[numProducts];
您在这里真正要求的是“如何将XML绑定到Java对象?”
查看javax.xml.bind Marshaller和Unmarshaller接口。
答案 4 :(得分:0)
如果我理解正确,您需要能够找到给定产品的所有积分,反之亦然?我认为你应该在这种情况下添加List to Point。如果您只是要迭代它们,我会使用LinkedList。