Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在Java中自动生成动态代码?_Java_Loops_Dynamic Programming_Code Generation - Fatal编程技术网

有没有办法在Java中自动生成动态代码?

有没有办法在Java中自动生成动态代码?,java,loops,dynamic-programming,code-generation,Java,Loops,Dynamic Programming,Code Generation,我希望在我的代码中能够动态生成循环及其相应的主体。我的代码现在看起来像这样,我已经明确定义了每个循环和循环体,每个循环和循环体都基于变量“len”的值运行。如何更改它,以便动态生成循环代码,例如我为每个条件编写的循环代码 ArrayList映射所有(字符串输入){ int len=input.length(); ArrayList输出=新的ArrayList(); //字符串[]输出=新字符串[len]; ArrayList OutputString=新的ArrayList(); 对于(int

我希望在我的代码中能够动态生成循环及其相应的主体。我的代码现在看起来像这样,我已经明确定义了每个循环和循环体,每个循环和循环体都基于变量“len”的值运行。如何更改它,以便动态生成循环代码,例如我为每个条件编写的循环代码

ArrayList映射所有(字符串输入){
int len=input.length();
ArrayList输出=新的ArrayList();
//字符串[]输出=新字符串[len];
ArrayList OutputString=新的ArrayList();

对于(int i=0;i带流的清洁版本:

static ArrayList mapAll1(字符串输入){
int len=input.length();
ArrayList输出=新的ArrayList();
//字符串[]输出=新字符串[len];
ArrayList OutputString=新的ArrayList();
对于(int i=0;ioutputs.get(len-(i+1)))
//将列表转换为列表,
.map(x->newarraylist(x.chars()
.mapToObj(字符::toString)
.collect(收集器.toList())
)
//减少
.reduce(new ArrayList(),(acc,list)->new ArrayList(
acc.isEmpty()?列表:list.stream()
.flatMap(前缀->附件流()
.map(尾部->前缀+尾部)
).collect(Collectors.toList());
}
返回输出字符串;
}
主体部分以旧方式书写,并作了进一步解释

if(len==1)
for(int i=0;i
递归可能是一个更干净的解决方案。@assylias我该怎么做?请给我一些提示。谢谢。我实际上是一个新手。在编码方面。你的第一个循环(
len==1
)没有任何意义。您只是将相同的内容分配给循环中的相同变量,而不依赖于
i
@realompoint实际上依赖于
i
。数组列表
outputs
与从mapOne函数获得的字符串输出一起添加到
输入的每个字符中e> string.Not in your
len==1
案例中。我尝试过使用它,但对于大小大于1个字符的字符串,我没有得到任何输出。感谢您花时间编写答案。这些lambda表达式让我不知所措。有没有办法不使用它们来实现这一点?我有一个bug,现在尝试一下,我还添加了一个没有streams@Mave的版本里克德。Aece@Iczapski由于某些原因,它不会再次生成大于1的任何输出。我是否要发布完整的代码?这可能会为您提供更好的上下文。我非常感谢您的帮助。:)我添加了我的测试,您可以检查我是否了解您的情况@MaverickD.AeceOK。我发现我误解了您想要做什么,并且做了完全不同的事情。您可以为
mapOne
添加实现吗?正如前面所说的,我认为应该使用递归@MaverickD.Aece来完成