2012-02-28 3 views
0

Я попытался найти связанные вопросы здесь. Я думаю, что это общий вопрос, но мне не повезло, что я все еще не могу найти в Интернете.Может ли вектор хранить несколько данных в одной позиции?

Точка содержит 3 части, id, lat и lon. Я использовал 3 выделенных вектора для их хранения, но они связаны друг с другом. Когда новая точка найдена, она должна добавить 3 раза в разные векторы ...

Я хочу добавить 3 данных в ОДИН вектор, а не в 3 выделенных вектора. Может ли Vector сделать это? или любой другой простой способ достичь моей цели?

Большое спасибо!

Вот мой код:

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++;  
} 
+0

Это звучит как домашнее задание. Подсказка - использовать объекты. –

+1

Vector > но, возможно, нет причины использовать pre_mature Массивы типа – mKorbel

+1

они все еще учат Vector? – aviad

ответ

0

Вы можете хранить несколько «данных» в векторная позиция, но вы не можете хранить более одного «объекта». Таким образом, очевидное решение - использовать один «объект», чем содержать несколько «данных». Если вы хотите сохранить местоположение (широта/долгота) в один вектор позиции, создать класс, который modelates мЕСТА

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)); 
0

Вам нужно создать класс, который может хранить три части в точке, а затем создать Vector<Point> провести сбор этих объектов.

Что-то вроде:

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

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

На стороне записки, я не думаю, что использование Vector с особенно обнадеживает больше, поэтому я хотел бы использовать List, такие как ArrayList вместо: List<Point> = new ArrayList<Point>. я просто смотрел это, поскольку я не был уверен на 100%, а вот полезную статью, описывающую, когда использовать каждый: Vector or List

2

Вы можете создать вектор своего собственного класса, как Vector<YourClass> и этот класс содержит все 3 переменными являются его поля.

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

Мы обычно создают отдельные классы и хранить экземпляры тех, к вектору:

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

и позже:

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

и в методе:

Element link = (Element) links.item(i); 
//add part 
Coordinate coord = new Coordinate(); 
coord.id = link.getAttribute("id"); 
coord.lat = Double.parseDouble(link.getAttribute("lat")); 
coord.lon = Double.parseDouble(link.getAttribute("lon")); 
coordinates.add(coord); 
Смежные вопросы