【问题标题】:What should List<long[]> method type return? [duplicate]List<long[]> 方法类型应该返回什么? [复制]
【发布时间】:2020-12-31 09:47:43
【问题描述】:

谁能解释这种类型的方法应该返回什么?

public static List<long[]> removNb(long input) {

我已经为此苦苦挣扎了很长时间。在我的方法中,这个 ArrayList List&lt;Long&gt;result=new ArrayList&lt;&gt;(); 保存了返回数据,但我不明白应该返回什么,就像我尝试返回一样,它会抛出错误error: incompatible types: List&lt;Long&gt; cannot be converted to List&lt;long[]&gt;。我已经搜索了网络但没有找到任何事物。我以前从未见过这个 Listlong 之后的这些 [] 大括号是什么? 我无法更改函数原型,因为我的运动条件不允许。我尝试过创建长数组并使用 Arrays.asList 方法,但没有帮助,或者我用错了。

希望你们能帮助我。 先感谢您。和平与爱!

【问题讨论】:

  • 方法的返回类型是List&lt;long[]&gt;,即一个List持有long数组。
  • 关键点:不要混淆概念。要么使用数组数组,要么使用长列表。你可能找不到关于混合这两种东西的内容,因为这种混合是你在现实世界中真正避免的。
  • 当您的代码不起作用时,您的问题中应该有一个minimal reproducible example

标签: java methods casting return return-type


【解决方案1】:

在 Java 中,[] 表示一个简单的数组,所以long[] 是一个包含long 元素的数组。 List&lt;long[]&gt; 是一个存储long[] 元素的列表,因此列表的每个元素都是一个包含long 元素的数组。因此,您需要像这样创建结果:

public static List<long[]> removNb(long input) {
    List<long[]> result = new ArrayList<>();
    long[] myLongArray = {input};
    result.add(myLongArray);
    return result;
}

【讨论】:

    【解决方案2】:

    它是long[]List,即基本类型long 的数组(不要将其与Long 包装器混淆)。例如,以下是构建具有预期返回类型的有效对象的方法:

    List<long[]> list = new ArrayList<>();
    long[] array = new long[1];
    array[0] = 42L
    list.add(array);
    

    【讨论】:

      【解决方案3】:

      List&lt;long&gt; 是一个列表,其中每个元素都是长类型。

      List&lt;long[]&gt; 是一个列表,其中每个元素都是一个 long 类型的数组。

      List<long[]> list = new ArrayList<long[]>();
      long[] arr = new long[] {1L, 2L};
      list.add(arr);
      

      【讨论】:

        【解决方案4】:

        是原始类型长数组(long[])的list(List)

        请参考示例示例,它会让您了解长数组返回类型列表。

        import java.util.ArrayList;
        import java.util.List;
        
        public class ListOfLongArray {
        
            public static List<long[]> removNb(long input) {
                long[] arrayOfLong1={1L,2L};
                long[] arrayOfLong2={3L,4L};
                List<long[]> listOfLongArray=new ArrayList<>();
        
                listOfLongArray.add(arrayOfLong1);
                listOfLongArray.add(arrayOfLong2);
                return listOfLongArray;
            }
        
            public static void main(String[] args) {
        
                List<long[]> listOfLongArray=removNb(2L);
                for (long[] longs:listOfLongArray) {
                    for (Long l: longs) {
                        System.out.print(l+"\t");
                    }
                    System.out.println(); //new line
                }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-12
          • 1970-01-01
          • 2021-11-19
          • 1970-01-01
          • 2018-09-26
          • 1970-01-01
          • 2011-07-03
          • 2022-01-21
          相关资源
          最近更新 更多