Java 和 C# 中使用迭代器删除列表元素的对比
Java 和 C# 中使用迭代器删除列表元素的对比
在 Java 和 C# 中,使用迭代器删除列表元素时,存在一些区别。以下是两种语言的代码示例:
Java 代码:
List<String> list = new ArrayList<>();
list.add('1');
list.add('2');
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (删除元素的条件) {
iterator.remove();
}
}
C# 代码:
List<string> list = new List<string>();
list.Add('1');
list.Add('2');
IEnumerator<string> enumerator = list.GetEnumerator();
while (enumerator.MoveNext())
{
string item = enumerator.Current;
if (删除元素的条件)
{
enumerator.Reset();
list.Remove(item);
}
}
区别:
- Java 中,直接使用
iterator.remove()方法删除元素,无需重置迭代器。 - C# 中,需要先使用
enumerator.Reset()重置迭代器,然后再使用list.Remove(item)删除元素。
原因:
在 Java 中,Iterator 接口的 remove() 方法是专门用来删除元素的,因此直接调用即可。而在 C# 中,IEnumerator 接口没有提供直接删除元素的方法,需要使用 Reset() 方法重置迭代器,并将元素从列表中移除。
建议:
- 使用迭代器删除列表元素时,建议使用相应的语言规范,以确保代码的正确性。
- 在 C# 中,可以使用
foreach循环来遍历列表,并使用list.Remove(item)方法删除元素,这样可以避免使用IEnumerator接口和Reset()方法。
示例:
C# 中使用 foreach 循环删除元素:
List<string> list = new List<string>();
list.Add('1');
list.Add('2');
foreach (string item in list)
{
if (删除元素的条件)
{
list.Remove(item);
}
}
原文地址: https://www.cveoy.top/t/topic/fVZ7 著作权归作者所有。请勿转载和采集!