将列表中的单词更改为小写

时间:2013-09-24 13:36:02

标签: java string list linked-list

/** Read the sequence of words on INPUT, and return as a List.  If LINKED,
 *  use a linked representation.  Otherwise, use an array representation.
 */
static List<String> readList(Scanner input, boolean linked) {
    List<String> L;
    if (linked) {
        L = new LinkedList<String>();
    } else {
        L = new ArrayList<String>();
    }
    while (input.hasNext()) {
        L.add(input.next());
    }
    for (String word : L) {
        word = word.toLowerCase();
    }
    return L;
}

这是我从文本文件中读取单词并将其作为列表返回的代码。但是,我想让文件中的所有单词小写,但toLowerCase方法不起作用。关于如何使它们全部小写的任何建议?

4 个答案:

答案 0 :(得分:7)

重新分配word将不会影响列表中包含的内容。为什么不在添加到列表时调用toLowerCase()

while (input.hasNext()) {
    L.add(input.next().toLowerCase());
}

答案 1 :(得分:2)

字符串是不可变的。您需要在列表中替换它们。

for (int i = 0; i < L.length(); ++i) {
    L.set(i, L.get(i).toLowerCase();
}

或者,您可以在添加到列表时执行toLowerCase()

while (input.hasNext()) {
    L.add(input.next().toLowerCase());
}

答案 2 :(得分:0)

怎么样

L.add(input.next().toLowerCase());

答案 3 :(得分:0)

java.lang.String是不可变的。 word.toLowerCase()方法返回新的String,不包含在列表中。

使用此代码:

1  while (input.hasNext()) {
2    L.add(input.next().toLowerCase());
3  }