Java 向量能否在一个位置存储多个数据?

Java 向量能否在一个位置存储多个数据?,java,eclipse,vector,Java,Eclipse,Vector,我试图在这里找到相关的问题。我认为这是一个常见的问题,但不幸的是我仍然无法在互联网上找到 一个点包含3个部分,id、lat和lon。我使用了3个分开的向量来存储它们,但它们是相互关联的。当一个新的点被发现时,它必须在不同的向量中添加3次 我想将3个数据添加到一个向量中,而不是3个分开的向量。矢量能做到吗?或者任何其他简单的方法来达到我的目标 非常感谢 这是我的密码: public class Try01 { static Vector<String> id = new Vecto

我试图在这里找到相关的问题。我认为这是一个常见的问题,但不幸的是我仍然无法在互联网上找到

一个点包含3个部分,id、lat和lon。我使用了3个分开的向量来存储它们,但它们是相互关联的。当一个新的点被发现时,它必须在不同的向量中添加3次

我想将3个数据添加到一个向量中,而不是3个分开的向量。矢量能做到吗?或者任何其他简单的方法来达到我的目标

非常感谢

这是我的密码:

public class Try01 {
  static Vector<String> id = new Vector<String>();
  static Vector<Double> lat = new Vector<Double>();
  static Vector<Double> lon = new Vector<Double>();

public static void main( String[] args ) throws Exception {
// create an input source for target document and parse it

  int counter=0;

  DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
  DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
  Document doc = docBuilder.parse (new File("data.xml"));

  // get all tags in the document with the name link
  NodeList links = doc.getElementsByTagName( "node" );

  for( int i = 0; i < links.getLength(); i++ ) {      
  Element link = (Element) links.item( i );
  //add part
  id.add(link.getAttribute( "id" ));
  lat.add( Double.parseDouble(link.getAttribute( "lat" )) );
  lon.add( Double.parseDouble(link.getAttribute( "lon" )) );

  //checking point: show the vector
  System.out.println( counter + " ) Vector = " + id.get(counter) + " and " + lat.get(counter) + " with " + lon.get(counter));

  counter++;     
}
公共类Try01{
静态向量id=新向量();
静态向量lat=新向量();
静态向量lon=新向量();
公共静态void main(字符串[]args)引发异常{
//为目标文档创建输入源并对其进行分析
int计数器=0;
DocumentBuilderFactory docBuilderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder=docBuilderFactory.newDocumentBuilder();
Document doc=docBuilder.parse(新文件(“data.xml”);
//使用名称链接获取文档中的所有标记
NodeList links=doc.getElementsByTagName(“节点”);
对于(inti=0;i
您需要创建一个类来存储点的三个部分,然后创建一个
向量来保存这些对象的集合

比如:

public class Point {
  private String id;
  private Double latitude;
  private Double longitude;

  //constructor, getters and setters, and rest of the class omitted
}

另一方面,我认为不再特别鼓励使用
向量
s,因此我会使用
列表
,例如
数组列表
列表=新数组列表
。我只是查找了一下,因为我不是100%确定,这里有一篇有用的文章解释了何时使用它们:

您可以创建一个对于您自己的类,如
Vector
,该类包含所有3个变量,即其字段

public class YourClass {
  String id;
  double lat;
  double lon;
}

我们通常创建单独的类,并将这些类的实例存储到向量:

public class Coordinate {
   public String id;
   public double lat;
   public double lon;
}
后来:

static Vector<Coordinate> coordinates = new Vector<Coordinate>();

您可以将多个“数据”存储到一个向量位置,但不能存储多个“对象”。因此,显而易见的解决方案是使用一个“对象”来存储多个“数据”。如果要将位置(纬度/经度)存储到一个向量位置,请创建一个对位置建模的类

class Location
{
    private String id = null;
    private double latitude = 0.0;
    private double longitude = 0.0;

    public Location(String id, double latitude, double longitude)
    {
        this.id = id;
        this.latitude = latitude;
        this.longitude = longitude;
    }

    public void setId(String id)
    {
        this.id = id;
    }

    public String getId()
    {
        return id;
    }

    public double getLongitude()
    {
        return longitude;
    }

    public void setLongitude(double longitude)
    {
        this.longitude = longitude
    }

    public double getLatitude()
    {
        return longitude;
    }

    public void setLatitude(double latitude)
    {
        this.latitude = latitude;
    }
}
然后将其存储到向量中,如:

double lat, lon;
Vector<Location> vlocations = new Vector<Location>();
vlocations.add(new Location(lat, lon));
double-lat,lon;
向量位置=新向量();
添加(新位置(lat,lon));

这听起来像是家庭作业。提示-使用objects.Vector,但可能没有理由使用预成熟的数组类型
double lat, lon;
Vector<Location> vlocations = new Vector<Location>();
vlocations.add(new Location(lat, lon));