【问题标题】:Java add 1D vector to 2D vectorJava将一维向量添加到二维向量
【发布时间】:2014-06-15 11:46:23
【问题描述】:

当我尝试将一维向量添加到二维向量时遇到问题。

具体代码如下

Vector<Vector<String>> multiVector = new Vector<Vector<String>>();
Vector<String> singleVector = new Vector<String>();

singleVector.add("a,a,a");                      
System.out.println(singleVector);               // [a,a,a]
multiVector.add(singleVector);                  
System.out.println(multiVector);                // [[a,a,a]]
singleVector.clear();                         
singleVector.add("b,b,b");                      
System.out.println(singleVector);               // [b,b,b]
multiVector.add(singleVector);                  
System.out.println(multiVector);                // [[b,b,b], [b,b,b]]

在最后一行,我期望“[[a,a,a], [b,b,b]]” 但结果是“[[b,b,b], [b,b,b ]]"

怎么了?

提前致谢。

【问题讨论】:

  • 请记住,您根本不应该使用 Vector 类。这是一个遗留类。

标签: java vector type-2-dimension


【解决方案1】:

您添加的是对象本身,而不是值,因此当您更改 singleVector 的值或清除它时,您正在对 multivector 添加一个!

你必须这样做:

Vector<Vector<String>> multiVector = new Vector<Vector<String>>();
Vector<String> singleVector1 = new Vector<String>();
Vector<String> singleVector2 = new Vector<String>();

singleVector1.add("a,a,a");                      
System.out.println(singleVector1);               // [a,a,a]
multiVector.add(singleVector1);                  
System.out.println(multiVector);                // [[a,a,a]]
singleVector2.add("b,b,b");                      
System.out.println(singleVector2);               // [b,b,b]
multiVector.add(singleVector2);                  
System.out.println(multiVector);                // [[a,a,a], [b,b,b]]

【讨论】:

    【解决方案2】:

    当您将singleVector 对象添加到multiVector 时,您不会复制它。因此,当您清除 singleVector 并将其更改为“b,b,b”时,您也在“更改”您添加到 multiVector 的(相同)对象。

    如果你想改变singleVector而不修改multiVector你应该singleVector = new Vector&lt;&gt;()而不是clear()'ing它。

    【讨论】:

      【解决方案3】:

      您使用了相同的 Vector,已添加到 multiVector,并重新定义了它的值。如果你想添加一个新的,你必须写:

      Vector<Vector<String>> multiVector = new Vector<Vector<String>>();
      Vector<String> singleVector = new Vector<String>();
      singleVector.add("a,a,a");                      
      System.out.println(singleVector);               // [a,a,a]
      multiVector.add(singleVector);                  
      System.out.println(multiVector);                // [[a,a,a]]
      singleVector = new Vector<String>();                        
      singleVector.add("b,b,b");                      
      System.out.println(singleVector);               // [b,b,b]
      multiVector.add(singleVector);                  
      System.out.println(multiVector);                // [[a,a,a], [b,b,b]]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-24
        • 1970-01-01
        • 2017-03-18
        • 2018-04-07
        • 1970-01-01
        • 2017-03-24
        • 1970-01-01
        相关资源
        最近更新 更多