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);
}
}
Java 和 C# 中使用迭代器删除列表元素的对比

原文地址: https://www.cveoy.top/t/topic/fVZ7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录