我有一个 List的StringS和我想trim()的列表中的每个元素.
目前,我正在使用a ArrayList,在元素中进行简单循环,并将修剪后的元素添加到返回列表中,如下所示:
int listLen = listToTrim.size();
List<String> trimmedList = new ArrayList<String>( listLen );
for ( int i = 0; i < listLen; i++ ) {
trimmedList.add( listToTrim.get( i ).trim() );
}
return trimmedList;
Run Code Online (Sandbox Code Playgroud)
对于大型列表,会有更有效的方法吗?
Joa*_*uer 14
不,你很好.这和它的效率一样高效.没有魔法可以避免迭代.
需要记住的一点是,'但是:如果listToTrim不是随机访问列表(即它没有实现RandomAccess),那么使用Iterator(或增强的for循环,它在Iterator内部使用)而不是传统的for循环通常效率更高.最值得注意的List是没有实现RandomAccess的LinkedList.打电话l.get(300)给LinkedList 600元将不得不通过〜300元迭代,以获得正确的!
修改代码以使用增强的for循环看起来像这样:
public List<String> trimStrings(Listy<String> listToTrim) {
List<String> trimmedList = new ArrayList<String>(listToTrim.size());
for (String str : listToTrim) {
trimmedList.add(str.trim());
}
return trimmedList;
}
Run Code Online (Sandbox Code Playgroud)
如果您不再需要原始列表,则重新使用原始列表可以节省内存并提高性能:
public void trimStringsInPlace(List<String> listToTrim) {
ListIterator<String> it = listToTrim.listIterator();
while (it.hasNext()) {
it.set(it.next().trim());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1654 次 |
| 最近记录: |