我有两组矢量,我需要在每个第一组元素中插入第二组并打印。
我的输入如下:{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);
}
}
答案 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);
// }
从上面