如何在java中向量中插入向量元素

时间:2016-07-11 11:45:10

标签: java vector data-structures collections

我有两组矢量,我需要在每个第一组元素中插入第二组并打印。

我的输入如下:{RED,BLUE,GREEN},{CSK,MI,RCB}

我的输出如下:{RED,CSK},{RED,MI},{RED,RCB},{BLUE,CSK},{BLUE,MI},{BLUE,RCB},{Green,CSK},{Green,MI},{Green,CSK}

我尝试了这样的代码。你能建议一下吗

public static void main(String[]args){
Vector v = new Vector();
v.addElement("RED");
v.addElement("BLUE");
v.addElement("GREEN"");
Vector v2 = new Vector();
Vector v3 = new Vector();
v2.addElement("CSK");
v2.addElement("RCB");
v2.addElement("MI");
for(int i=0; i<v.size(); i++){
    for(int j=0; j<v2.length; j++){
     v3 = v(i).add(v2(j));
    }
}
for(int i=0; i<v3.size(); i++){
    System.out.println(v3);
}
}

3 个答案:

答案 0 :(得分:3)

这称为笛卡儿产品,其工作方式如下:

List<String> rgbs = Arrays.asList("RED", "GREEN", "BLUE");
List<String> modes = Arrays.asList("CSK", "MI", "RCB");
List<List<String>> cartesianProduct = new ArrayList<>();
for (String rgb : rgbs) {
    for (String mode : modes) {
        List<String> product = new ArrayList<>();
        product.add(rgb);
        product.add(mode);
        cartesianProduct.add(product);
    }
}

我确实使用了一些新的语法和类,您可能仍然不知道,但与您的代码非常相似。

重要的是,结果的每个元素本身都是两个字符串的组合。我在这里使用了List。

答案 1 :(得分:3)

我也有解决方案..

 public static void main(String[] args) {
            Vector<String> v = new Vector<>();
            v.addElement("RED");
            v.addElement("BLUE");
            v.addElement("GREEN");
            Vector<String> v2 = new Vector<>();
            Vector<String> v3;
            Vector<Vector<String>> v4 = new Vector<>();
            v2.addElement("CSK");
            v2.addElement("RCB");
            v2.addElement("MI");
            for (String vector_v : v) {
                for (String vector_v2 : v2) {
                    v3 = new Vector<>(); // this declares new vector every time and this new vector is
                                        //  added to v4 and thus the list goes
                    v3.add(vector_v2);
                    v3.add(vector_v);
                    v4.add(v3);
                }
            }
            System.out.println(v4);
        }

答案 2 :(得分:2)

您的预期输出可以通过以下方式获得。

public static void main(String[]args){
        Vector v = new Vector();
        v.addElement("RED");
        v.addElement("BLUE");
        v.addElement("GREEN");
        Vector v2 = new Vector();
        Vector v3 = null;
        v2.addElement("CSK");
        v2.addElement("RCB");
        v2.addElement("MI");
        for(int i=0; i<v.size(); i++){
            for(int j=0; j<v2.size(); j++){
                v3 = new Vector();
                v3.add(v.get(i));
                v3.add(v2.get(j));
                System.out.println(v3);
            }
        }
//      for(int i=0; i<v3.size(); i++){
//          System.out.println(v3);
//      }

从上面

  1. v3 = v(i).add(v2(j));这行不会编译
  2. 仅矢量大小没有长度
  3. 获取元素必须使用get(index)方法
  4. 避免使用vector更好地使用ArrayList