将 ArrayList 转换为常规字符串数组 [重复]

Posted

技术标签:

【中文标题】将 ArrayList 转换为常规字符串数组 [重复]【英文标题】:Cast ArrayList to regular String array [duplicate] 【发布时间】:2016-10-30 19:53:35 【问题描述】:

我的项目有问题。 我有一个 JSP 页面和一个 Java servlet。 servlet 必须使用 session.setAttribute() 在会话中保存一个包含名称的列表。在 JSP 页面上,必须使用 session.getAttribute() 从会话中读取,并使用 for 循环从列表中打印出所有名称。所以目前的问题是我不知道如何将 Obect/ArrayList 转换为常规的 String 数组。 我知道有更好的方法可以做到这一点,但我必须这样做。

这是我的代码

Servlet:

private ArrayList<String> userlist = new ArrayList<String>(Arrays.asList("bla1","bla2","bla3","bla4")); // unsynchronisiert

public void addName(String name)
    userlist.add(name);
   

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    // TODO Auto-generated method stub
    addName(request.getParameter("username"));
    System.out.println(userlist);
    HttpSession session = request.getSession();
    session.setAttribute("userlist", userlist);

JSP:

String[] names = (String[]) session.getAttribute("userlist");
System.out.println(names);

【问题讨论】:

您不能将 ArrayList 强制转换为 String[]。为什么不将其转换为 ArrayList?如果你需要一个 String[] 你可以通过 list.toArray(new String[list.size()]) 解析它。 好的,我可以解决这个问题,但它仍然告诉我“null”。我不明白为什么? 【参考方案1】:

您正在将 ArrayList 转换为 Array。您无法将 ArrayList 转换为 Array。

你需要替换: String[] names = (String[]) session.getAttribute("userlist"); 与 ArrayList list= (ArrayList)session.getAttribute("userlist");

现在迭代列表并从中获取数据。

【讨论】:

好的,我可以解决这个问题,但它仍然告诉我“null”。我不明白为什么? 请提供错误日志文件。如果它返回 null ,则表示该密钥(用户列表)的会话中没有存储任何内容。或者您正在尝试在会话中存储之前获取数据。

以上是关于将 ArrayList 转换为常规字符串数组 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将字符串数组转换为 ArrayList [重复]

怎么将arraylist转换为字符串数组

将 ArrayList 转换为特定类型的数组 [重复]

将字符串的 Java ArrayList 转换为 JavaScript 数组

将 ArrayList 转换为包含不同长度数组的二维数组

如何在 Kotlin 中将字符串数组 JSON 转换为 ArrayList?