如何显示除一个元素外的ArrayList中的所有元素?

时间:2012-06-12 02:41:38

标签: java arraylist element

我希望显示ArrayList中的所有元素,除了元素10(单词“will”)。我该怎么做呢?当我运行以下代码时,它什么也没显示。

 private void practiceButtonActionPerformed(java.awt.event.ActionEvent evt) {
     ArrayList <String> practice1 = new ArrayList();
     Collections.addAll(practice1, "If", "she", "boarded", "the", "flight"
                        , "yesterday", "at",  "10:00,", "she", "will", "be"
                        , "here", "anytime", "now.");
     contentTextPane.setText(practice1.get(0+1+2+3+4+5+6+7+8+9+11+12+13));
 }

6 个答案:

答案 0 :(得分:4)

您可以删除列表中的第10个元素:

someList.remove(10);

您可以像这样连接列表中的每个元素:

StringBuilder text = new StringBuilder();
for (String thisString : someList) {
    text.append(thisString).append(" ");
}

// test it
System.out.println(text.toString());

答案 1 :(得分:3)

该行

practice1.get(0+1+2+3+4+5+6+7+8+9+11+12+13)

不按照您的想法行事。这将计算0 + 1 + 2 + ... + 13的值,然后在ArrayList中查找该条目。由于您的ArrayList没有这么多元素,因此会抛出IndexOutOfRange例外。

如果要显示除第十个元素以外的所有内容,请尝试使用循环:

StringBuilder builder = new StringBuilder();
for (int i = 0; i < practice1.size(); i++) {
    if (i != 10) {
        builder += practice1.get(i);
    }
}
contextTextPane.setText(builder.toString());

希望这有帮助!

答案 2 :(得分:3)

它没有显示任何内容,因为您使用不存在的语法从列表中检索元素

0+1+2+3+4+5+6+7+8+9+11+12+13

只是被评估为所有数字的总和,然后用于获取一个超出边界的元素。

你需要做的是像

String r = "";
for (int i = 0; i < practice.size(); ++i)
  if (i != 10)
    r += practice.get(i);

contentTextPane.setText(r);

答案 3 :(得分:2)

private void practiceButtonActionPerformed(java.awt.event.ActionEvent evt) {
    ArrayList <String> practice1 = new ArrayList();

    Collections.addAll(practice1, "If", "she", "boarded", "the", "flight", "yesterday", "at",  
 "10:00,", "she", "will", "be", "here", "anytime", "now.");

    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < practice1.size(); i++) {
        if (i == 10) {
            continue;
        }
        sb.append(practice1.get(i));
        if (i != practice1.size()-1) {
            sb.append(' ');
        }
    }

    contentTextPane.setText(sb.toString());
}

答案 4 :(得分:1)

调用practice1.get(0+1+2+3+4+5+6+7+8+9+11+12+13)会在实践1中为索引81提供对象,该对象等于参数值的总和,抛出ArrayIndexOutOfBoundsException。

相反,您应该遍历这些值并将它们添加到StringBuilder。

StringBuilder sb = new StringBuilder();
for (int i = 0; i < practice1.size(); i++) {
    if (i != 10) {
        sb.append(practice1.get(i));
        sb.append(" ");
    }
}
contentTextPane.setText(sb.substring(0, sb.length() - 1));

答案 5 :(得分:0)

尝试使用:

practice1.get(0) + practice1.get(1) + ... 

......而不是:

contentTextPane.setText( practice1.get(0+1+2+3+4+5+6+7+8+9+11+12+13) );

虽然最好使用循环。