无法将值添加到列表中

时间:2014-05-07 07:45:40

标签: java

您好我正在尝试将值添加到列表中,如下面的代码所示。我收到了错误。

for (String n2 : number  ) {


   List<String> ARRAY  = new ArrayList<String>();
                if (!ARRAY.contains(number)) {
        ARRAY.add(number);
   }}

但是在将数字添加到列表中时会收到错误。

错误

 java:271: error: no suitable method found for add(List<String>
        ARRAY.add(number);
             ^
method List.add(int,String) is not applicable
  (actual and formal argument lists differ in length)
method List.add(String) is not applicable
  (actual argument List<String> cannot be converted to String by method invo

如果我使用如下

   for (String n2 : number  ) {
  List<String> ARRAY  = new ArrayList<String>();
  if (!ARRAY.contains(n2)) {
   Email(n2);
      ARRAY.add(n2);
  }
}

如果我在上面使用。虽然已经发送了值为n2的电子邮件,但它再次发送。 首先它必须发送但是第二次,因为它已经在数组中,它不应该发送正确吗?

6 个答案:

答案 0 :(得分:1)

1)ARRAY应该在你的for循环之外。

2)将if(!ARRAY.contains(number))替换为if(!ARRAY.contains(n2))。

您的代码需要这样

 List<String> ARRAY  = new ArrayList<String>();
 for (String n2 : number  ) {
     if (!ARRAY.contains(n2 )) {
          ARRAY.add(n2);
     }
 }

答案 1 :(得分:1)

您的代码问题是您要添加number而不是n2

像这样更改代码

 List<String> ARRAY  = new ArrayList<String>();
    for (String n2 : number  ) {
          if (!ARRAY.contains(n2)) {
              ARRAY.add(n2);
          }
       }

答案 2 :(得分:0)

您正在尝试将一个集合 - 数字添加到字符串列表中。 我假设您正在尝试将n2添加到ARRAY。

ARRAY.add(n2);

答案 3 :(得分:0)

number是字符串的集合,您要添加int ARRAY而不是添加n2

List<String> ARRAY  = new ArrayList<String>();
   for (String n2 : number  ) {
       if (!ARRAY.contains(n2)) {
          ARRAY.add(n2);
      }
    }

答案 4 :(得分:0)

我担心你的代码会出现一些错误,而不仅仅是那个错误。正如已经多次指出的那样,您尝试将可迭代的字符串集合number添加到Array而不是n2这是迭代变量。如果您想添加完整的Collection个实例,可以使用addAll()

至于其他方面,我强烈建议坚持使用Java命名约定并为变量使用小写名称。这将提高可读性,因为许多社区成员坚持该惯例。你可以找到一个简洁的文字here

除非您的代码高度简化,否则您似乎也错误地在循环范围内声明ArrayList。每次进入循环时都要实例化一个新的ArrayList。我不确定你想做什么。一定要检查你的设计。

另外,如果您只是想避免重复值,我建议您使用Set,因为它会在插入时使用每个成员的hashCode()自动执行检查以检查是否存在冲突。尝试做:

HashSet<String> uniqueSet = new HashSet<>(number);

您现在应该拥有Collection个唯一字符串。

答案 5 :(得分:0)

List<String> ARRAY  = new ArrayList<String>();
for (String n2 : number  ) {
    if (!ARRAY.contains(n2)) {
        ARRAY.add(n2);
    }
}

List<String> ARRAY  = new ArrayList<String>(); //have this out of the thread