[英]Java: Combine 2 arrays into a third array using the first 3 integers of the first array then 3 integers from the second one
[英]How to print a combination of words one from first array the second from second array and third from third array?
我希望此代碼輸出以下內容,它具有三個以逗號分隔的數組列表條目作為分隔符("slow,steady"),("blue, white,green")("whale, shark ");
它必須輸出以下內容
slow blue whale
slow white whale
slow white shark
steady blue whale
steady white shark
and so forth.
我能夠將每個單詞分開,並將它們放在三個單獨的列表中。 list1包含慢速穩定list2包含藍白色綠色,list3包含鯨鯊。 但是我無法將它們連接起來,歡迎任何輸入。
import java.util.StringTokenizer;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
public class HelloWorld {
String input; //input String
StringBuffer output; //Holds the output
String delimiter = ","; //Delimiter (default comma (,))
String arrayOfWords[];
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
List<String> list3 = new ArrayList<String>();
int listCount;
/*
* Generates combinations by applying the
* concept of recursion
*/
public void generateCombinations(String input, String delimiter,int listCount)
{
output = new StringBuffer();
this.input = input;
this.delimiter = delimiter;
this.listCount = listCount;
String[] stockArr = new String[list1.size()];
String[] stockArr1 = new String[list2.size()];
String[] stockArr2 = new String[list2.size()];
if(listCount == 1) {
String items1[] = input.split(",");
for(int i=0;i< items1.length; i++){
list1.add(items1[i]);
}
}
else if(listCount == 2) {
String items2[] = input.split(",");
for(int i=0;i< items2.length; i++){
//System.out.println(items2[i]);
list2.add(items2[i]);
}
}
else {
String items3[] = input.split(",");
for(int i=0;i< items3.length; i++){
// System.out.println(items3[i]);
list3.add(items3[i]);
}
}
stockArr = list1.toArray(stockArr);
stockArr1 = list2.toArray(stockArr1);
stockArr2 = list3.toArray(stockArr2);
for(String s1 : stockArr){
System.out.print(s1);
}
for(String s2 : stockArr1){
System.out.print(s2);
}
for(String s3 : stockArr2){
System.out.print(s3);
}
for(int i=0;i<list1.size();i++){
String s1 = list1.get(i).toString();
for(int j=0;j<list2.size();j++){
String s2 = list2.get(j).toString();
System.out.println(s1+s2);
}
}
}
public static void main(String[] args) {
ArrayList <String> strings = new ArrayList <String>();
int i=1;
for(String string : strings){
new HelloWorld().generateCombinations(string , ",",i);
++i;
}
}
}
這可以使用嵌套的for
循環來完成。 在您的情況下為3層。
stockArr = list1.toArray(stockArr);
stockArr1 = list2.toArray(stockArr1);
stockArr2 = list3.toArray(stockArr2);
for (String a : stockArr) {
for (String b : stockArr1) {
for (String c : stockArr2) {
System.out.println(a + " " + b + " " + c);
}
}
}
另外,如果您使用StringBuilder
來連接多個String
,它總是會表現得更好。 即
for (String a : stockArr) {
for (String b : stockArr1) {
for (String c : stockArr2) {
StringBuilder sb = new StringBuilder();
sb.append(a)
.append(" ")
.append(b)
.append(" ")
.append(c);
System.out.println(sb.toString());
}
}
}
試試這個
public static void main(String[] args) {
List<String[]> afterSplit = new ArrayList<String[]>();
afterSplit.add("slow, steady".split(","));
afterSplit.add("blue, white, green".split(","));
afterSplit.add("whale, shark ".split(","));
for (int i = 0; i < afterSplit.get(0).length; i++) {
for (int j = 0; j < afterSplit.get(1).length; j++) {
for (int k = 0; k < afterSplit.get(2).length; k++) {
System.out.println(afterSplit.get(0)[i].trim() + " "
+ afterSplit.get(1)[j].trim() + " "
+ afterSplit.get(2)[k]);
}
}
}
}
終於,它運行良好:)獎勵:現在,連接多少個單詞都沒有關系。
import java.util.*;
import java.util.stream.*;
public class Test {
public static void generateCombinations(ArrayList <String> strings, String delimiter){
int stringsSize = strings.size();
int i=0;
String text = "";
parseList(text, stringsSize ,i, strings, delimiter);
}
public static void parseList(String text, int stringsSize, int i, ArrayList <String> strings, String delimiter) {
String stringStream = strings.get(i);
String[] list = stringStream.split(delimiter);
if (i==stringsSize-1) {
for (String string : list){
System.out.println(text + " " + string.replaceAll("\\s+",""));
}
} else {
for (String string : list){
String text2 = text + " " + string.replaceAll("\\s+","");
int j = i+1;
parseList(text2, stringsSize, j, strings, delimiter);
}
}
}
public static void main(String[] args) {
ArrayList <String> strings = new ArrayList <String>();
strings.add("slow,steady");
strings.add("blue, white, green");
strings.add("whale, shark ");
generateCombinations(strings , ",");
}
}
結果是 :
slow blue whale
slow blue shark
slow white whale
slow white shark
slow green whale
slow green shark
steady blue whale
steady blue shark
steady white whale
steady white shark
steady green whale
steady green shark
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.