【问题标题】:get() from a List, but passing long as argument in Java [duplicate]从列表中获取(),但在Java中作为参数传递[重复]
【发布时间】:2020-11-17 20:15:42
【问题描述】:

我正在尝试从列表List<Class> listofitems 中获取一个元素,并且我有一个long 类型的全局变量position。我想执行listofitems.get(position),但它不允许我这样做,因为getint 作为参数。如果我想将position 的类型保持为long,是否还有其他方法可以做到这一点? (除了将position 转换为int 之外还有其他方式吗?

【问题讨论】:

  • 在需要时将position 字段转换为int 有什么问题?
  • Java 列表不能包含更多的元素,如 Integer.MAX_VALUE。转换为 int 或使用自定义列表类型。
  • 只要.get((int)position);
  • @GiorgiTsiklauri 他当然可以这样做,但这引出了一个问题,也许他们实际上打算存储超过 2^31 个元素的列表,这样的演员阵容将是徒劳的。

标签: java


【解决方案1】:

如果您想这样做,您必须构建一个包含一组列表的类来表示您的数据。您可以编写自己的访问方法,将长整数拆分为较小的整数,以访问列表中的正确位置。

看到这个答案:Using a long as ArrayList index in java

【讨论】:

    【解决方案2】:

    这是必须通过Unsafe api 查询内存的地方。如果列表/数组大于 Integer.MAX_VALUE here 是链接。
    注意:

  • 编写您自己的列表/数组实现。
  • Unsafe 实际上是不安全的。
  • 这样的实现需要长索引。
  • 速度会很丰富。
  • 【讨论】:

      【解决方案3】:

      如果您拥有的是List<Class>,并且无法将其更改为另一种类型,那么除了将long 转换为int 之外,您无能为力。除了int 之外,没有办法使用任意的List 并调用get

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-28
        • 2012-08-26
        • 1970-01-01
        • 2017-03-13
        • 2019-07-23
        • 1970-01-01
        • 2018-06-10
        相关资源
        最近更新 更多