有没有办法在Java中自动生成动态代码?
我希望在我的代码中能够动态生成循环及其相应的主体。我的代码现在看起来像这样,我已经明确定义了每个循环和循环体,每个循环和循环体都基于变量“len”的值运行。如何更改它,以便动态生成循环代码,例如我为每个条件编写的循环代码有没有办法在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
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 yourlen==1
案例中。我尝试过使用它,但对于大小大于1个字符的字符串,我没有得到任何输出。感谢您花时间编写答案。这些lambda表达式让我不知所措。有没有办法不使用它们来实现这一点?我有一个bug,现在尝试一下,我还添加了一个没有streams@Mave的版本里克德。Aece@Iczapski由于某些原因,它不会再次生成大于1的任何输出。我是否要发布完整的代码?这可能会为您提供更好的上下文。我非常感谢您的帮助。:)我添加了我的测试,您可以检查我是否了解您的情况@MaverickD.AeceOK。我发现我误解了您想要做什么,并且做了完全不同的事情。您可以为mapOne
添加实现吗?正如前面所说的,我认为应该使用递归@MaverickD.Aece来完成