当前位置: 首页 > 知识库问答 >
问题:

列表列表不保留内容

朱锦
2023-03-14

所以我有一个递归程序,我试图生成一个字符串的所有排列。我打算将排列存储在一个名为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);
    
    
}

}

共有1个答案

苏季同
2023-03-14

您是正确的,因为容器是通过引用传递的,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自动转义保留字。 我知道我可以: 使用反引号强制转义(为了安全起见,请逃避一切) 更改所有标识符,使它们在任何数据库中都肯定不是关键字(使它们难看) 将模式绑定到一组特定的数据库,转义关键字的并集(如果将新数据库添加到组合中,则会中