java - vector总是有相同的结果

Mar*_*tin 0 java vector

我读了一个.ini文件并将每个属性放入一个临时数组中,我把它放在一个向量中 - 直到这里它工作正常.

但是,如果我想访问该向量中的每个数组,我总是得到相同的结果,这是不可能的.我尝试了不同的方式,不同的循环和一切不同,但总是相同的结果,这是我的实际代码:

    tmp2 = new String[2];
    for(Enumeration e=allPropertys.elements(); e.hasMoreElements();) {
        tmp2 = (String[])e.nextElement();
        for(int i = 0; i < tmp2.length; i++)
        {
            System.out.println(tmp2[i]);
        }
    }
Run Code Online (Sandbox Code Playgroud)

以下是我将所有内容放入向量的代码:

    try {
        tmp = new String[2];

        prop = new Properties();
        prop.load(new FileReader("konfig.ini"));

        Enumeration e = prop.propertyNames();
        while (e.hasMoreElements()) {

            String key = (String)e.nextElement();
            String value = prop.getProperty( key );
            tmp[0] = key + " " +  value;
            tmp[1] = value;

            System.out.println("Property: " + tmp[0] + " und Value: " + tmp[1]);
            allPropertys.add(tmp);
        }
    }
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 6

我的猜测是,当你填充向量时,你会为每个属性重用相同的字符串数组.这使得向量包含10次(10为条目数)相同的数组:

String[] property = new String[2];
for (every line in the file) {
    property[0] = ...;
    property[1] = ...;
    vector.add(property);
}
Run Code Online (Sandbox Code Playgroud)

这应该被替换为

for (every line in the file) {
    String[] property = new String[2];
    property[0] = ...;
    property[1] = ...;
    vector.add(property);
}
Run Code Online (Sandbox Code Playgroud)

另外,请注意在您的代码片段中,您创建一个新的String数组来初始化您的tmp2变量,然后将其值替换为向量中的值.初始化是不必要的.