所以我有一个递归程序,我试图生成一个字符串的所有排列。我打算将排列存储在一个名为ans的列表中。
每个当前排列都存储在用于填充ans列表的容器列表中。我怀疑,因为列表是一种引用类型,所以我可能会因为容器列表被操纵而丢失ans列表中的值?我是白痴吗
import java.util.*;
public class practice_3 {
static String str="abc";
static List<List<Character>> ans=new ArrayList<List<Character>>();
public static void permString(ArrayList container )
{
if(container.size()==str.length())
{System.out.println(container);
ans.add(container);
return;
}
for(int i=0;i<str.length();i++)
{
if(!container.contains(str.charAt(i)))
{
container.add(str.charAt(i));
permString(container);
container.remove(container.size()-1);
}
}
}
public static void main(String[] args) {
ArrayList<Character> container=new ArrayList<>();
permString(container);
System.out.println(ans);
System.out.println("container end="+container);
}
}
您是正确的,因为容器是通过引用传递的,container
中逐点所做的更改也反映在ans
(集合的集合)中。
为了避免这种情况,您需要在存储到ans
集合时克隆/创建容器的新副本。这可以通过以下方法轻松实现。
ans.add(new ArrayList<Character>(container));
问题内容: 我有两个看起来像的清单: 我要做的是将list1的所有那些元素都保留在list2中。结果应该是: 问题答案: 使用运算符,您可以检查元素是否在序列中。 使用列表理解: 但是效率不高。您最好转换为对象。
问题内容: 如果我在python中有一个列表(或数组,字典…),它可能会超出可用的内存地址空间,(32位python)有哪些选项和相对速度?(除了不使列表变大之外)列表 可能 超出内存,但我无法事先知道。一旦开始超过75%,我将不再希望将该列表保留在内存中(或者无论如何都不会保留新项目),有没有办法在中途转换为基于文件的方法? 最佳(快进和快出)文件存储选项是什么? 只需要存储一个简单的数字列表。
我有一个Pandas系列包含一个字符串列表,如下所示: 我只想保留列表中的第一个到第二个条目,如下所示: 我尝试对其进行切片,,但这样做只返回该系列的前两个索引... 我也尝试过和其他切片,但结果不是我想要的。 我怎么能只保留整个熊猫系列清单的前两项呢? 谢谢!
我在Spring MVC应用程序中有一个JSP页面,其中只有几个提交按钮。它有很少的下拉框,我需要保留应用程序预定义的值(例如,“Get Info”)用于提交按钮的点击(“BTN SelecTall”,“BTN UnselecTall”),并且需要保留用户选择的值(除了“Get Info”)用于提交按钮的点击(“Default Action”,“BTN Reset”)。 创建了一个(hidden,
问题内容: 我似乎在Hibernate中映射列表时遇到问题。在我们的项目中有一类用含有类与含有。 Hibernate 是否可以使用注释进行映射?我的意思是,因为它没有注释? 问候 问题答案: 用途: 资料来源: 7.2.3。基本类型和可嵌入对象的集合
问题内容: 我正在尝试对多个不同的数据库使用一种Hibernate映射:H2,Oracle,MySql。 每个数据库都有一个不同的保留字列表。 我希望Hibernate自动转义保留字。 我知道我可以: 使用反引号强制转义(为了安全起见,请逃避一切) 更改所有标识符,使它们在任何数据库中都肯定不是关键字(使它们难看) 将模式绑定到一组特定的数据库,转义关键字的并集(如果将新数据库添加到组合中,则会中