从矢量转移到矢量

时间:2012-02-27 18:02:18

标签: java vector

我目前正在尝试将数据从坐标文件中拉出来,作为字符串传递到向量中,然后将数据从此向量中拉出,并将其从字符串转换为一系列点,然后将其放置进入第二个Vector。

我无法在网上找到解决方案。我有第一个向量的代码,以及将它转换为双向的代码,以供向量使用。但我需要知道如何从第一个向量中提取数据!

我是Java的新手,所以如果这是一个非常简单的问题我会道歉!

这是我到目前为止编写的代码..我没有驱动程序,所以我不能测试它。 提前抱歉!

import java.io.*;
import java.util.*;

public class PointField {

     String ID;
     Vector<String> v;
     Vector<Point> v1;

     public PointField() {
           v = new Vector<String>(); 
           this.v1 = new Vector<Point>();
           this.ID = new String();
     }

     public String getID() {
           return this.ID;
     } 

     public Vector<String> getv() {
           return v;
     } 

     public Vector<Point> getv1() {
           return this.v1;
     } 

//Read all the lines from a file
     public Vector<String> getString(String fileName) throws Exception{

// Variable declarations
           File inputFile;
           FileInputStream inputStream;
           InputStreamReader inputStreamRead;
           BufferedReader br;

// Make the objects needed
           inputFile = new File(fileName);
           inputStream = new FileInputStream(inputFile);
           inputStreamRead = new InputStreamReader(inputStream);
           br = new BufferedReader(inputStreamRead);

// read all the lines and call getPoint method
           while (this.ID!= null) {
               this.ID = br.readLine();
               v.addElement(this.ID);
}
// DOESNT WORK FROM HERE Get String out of Vector v and make it return it as String ID
 public String getString(Vector<String> v) {
      Iterator<String> it;
      it = this.v.iterator();
      while(it.hasNext()) {
      this.ID = (String)it.next();
      }

             return ID; 
 }

//* Get String into two doubles and assign to x,y variables     
     public Point makePoints(String s, String delim) {
           while (st.hasMoreTokens()){
               st = new StringTokenizer(s, delim);  
               p = new Point(x,y);
               x = Double.parseDouble(st.nextToken());
               y = Double.parseDouble(st.nextToken());
          }     
            return p;       
    }


}

2 个答案:

答案 0 :(得分:1)

也许你可以找到有用的this one 来自Apache Collection Util 或者在该库中,您可以找到使用列表的各种方法(转换,过滤等)。

你遇到的问题是迭代器...而不是it = this.v.iterator();用迭代器做一个实例变量

答案 1 :(得分:0)

你的getString()方法只会返回Vector的最后一个元素,因为它每次创建一个新的Iterator,遍历所有元素,然后返回最后一个元素。

我不太清楚为什么要向一个Vector添加元素,然后将它们转换为第二个Vector - 你不能一步完成吗?

看起来你正在读第一行Vector OK。

我建议你迭代该向量,使用方法调用将每个元素转换为新形式(一次处理一个点的makePoints的修订版本,然后将结果添加到v2,如果你想要使用2个矢量。

Iterator<String> it = v.iterator();
while(it.hasNext()) {
   Point p = makePoint(it.next());
   v2.add(p);
}