【问题标题】:How do I put a String value into List <Integer>? [closed]如何将字符串值放入列表 <Integer>? [关闭]
【发布时间】:2020-12-13 08:52:29
【问题描述】:

我面临一项挑战,即将 String 值放入 List&lt;Integer&gt;。我只被允许使用标准列表格式和整数包装器。我怎样才能做到这一点?请。帮助。

【问题讨论】:

  • 我面临一项挑战,即要将 String 值放入 List&lt;Integer&gt;...“ — 这样的挑战?
  • 目前,有三个不同的答案,每个答案都遵循对您问题的完全不同的解释。请说明您想要实现的目标。
  • 听起来像是一个愚蠢的“圆孔中的方钉”挑战。我的回答是:你不能。与您不能将Apple 放入List&lt;Car&gt; 相同。它根本不适合(错误的类型)。或者更确切地说,虽然语言可以在物理上做到这一点,但由于向后兼容性问题,你永远不应该这样做。

标签: java string list generics collections


【解决方案1】:

如果您使用原始类型,您可以将任何您想要的内容添加到列表中,而无需进行类型检查。

List<Integer> integerList = new ArrayList<>();
List rawList = integerList;
rawList.add("string");
System.out.println(integerList);

输出:[string]

【讨论】:

  • 我建议添加一个“孩子不要在家做这个”警告,解释说这只是为了应对这些挑战,但不应该出现在生产代码中。此外,值得一提的是,由此产生的情况有一个名称,heap pollution,用于对将导致的错误进行分类。
【解决方案2】:

您可以使用 ASCII 编码将字符串数据存储为整数,如果您的意思是这样的话。

String str;
List<Integer> list;
//construct a new list and the desired string here...

for(int i=0; i<str.length; i++)
    list.addLast((int)str.charAt(i));

为了从列表中重新创建字符串,您需要单独附加每个字符:

String res = "";
for(Integer c : list)
    res += (char)c;

【讨论】:

  • OP 的任务是“String 放入List&lt;Integer&gt;”。您的 (int)str.charAt(i) 表达式的类型不是“a String”。
  • 那我很抱歉,因为我误解了这个问题。
猜你喜欢
  • 1970-01-01
  • 2020-02-01
  • 2018-05-22
  • 1970-01-01
  • 1970-01-01
  • 2019-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多