gpt4 book ai didi

java - 完成后重启迭代器

转载 作者:搜寻专家 更新时间:2023-11-01 01:43:52 25 4
gpt4 key购买 nike

我有一个列表,我想获取 i-1ii+1 位置的值。当 i 是第一个或最后一个索引时,它会抛出一个 IndexOutOfBoundsException。为了防止这种情况,我会写一些 if-statements 并像这样硬编码:

if (i == 0){
a = list.get(list.size()-1);
b = list.get(0);
c = list.get(1);
} else if (i == list.size()-1){
a = list.get(i-1);
b = list.get(i);
c = list.get(0);
} else {
a = list.get(i-1);
b = list.get(i);
c = list.get(i+1);
}

我发现这种方式有点静态。假设我想以这种方式从列表中获取 n 个条目,你会怎么做?

最佳答案

您可以使用 (i-1+list.size()) % list.size()(i+1) % list.size()
这也将处理长度为 1 的列表。

较重的选项:

  • 写一个方法

    <T> T get(List<T> list, int i)
    {
    i %= list.size();
    return list.get(i >= 0 ? i : i + list.size());
    }
  • 子类化并覆盖 get()

  • 制作一个包裹索引的包装器类

关于java - 完成后重启迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18333258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com