当前位置: 首页 > 面试题库 >

在Set toArray()方法中需要新的String [0]

黄朗
2023-03-14
问题内容

我正在尝试将Set转换为Array。

Set<String> s = new HashSet<String>(Arrays.asList("mango","guava","apple"));
String[] a = s.toArray(new String[0]);
for(String x:a)
      System.out.println(x);

而且效果很好。但是我不了解new String[0]in 的意义String[] a = s.toArray(new String[0]);

我的意思是起初我正在尝试String[] a = c.toArray();,但是没有用。为什么需要new String[0]


问题答案:

如果Set的元素足够大,则该数组将存储在其中。否则,将为此分配一个具有相同运行时类型的新数组。

Object []
toArray()
,返回Object[]不能转换为String[]或任何其他类型数组的。

T [] toArray(T []
a)

返回包含此集合中所有元素的数组;
返回数组的运行时类型是指定数组的运行时类型。如果集合适合指定的数组,则将其返回。否则,将使用指定数组的运行时类型和此集合的大小分配一个新数组。

如果您执行了实施代码(我正在从OpenJDK中发布代码),那么您会很清楚:

 public <T> T[] toArray(T[] a) {
     if (a.length < size)
     // Make a new array of a's runtime type, but my contents:
     return (T[]) Arrays.copyOf(elementData, size, a.getClass());
     System.arraycopy(elementData, 0, a, 0, size);
     if (a.length > size)
         a[size] = null;
    return a;
 }


 类似资料:
  • 主要内容:Java12 indent(n)方法,transform(Function<? super String ? extends R> f) 方法,Optional<String> describeConstable() 方法,resolveConstantDesc (MethodHandles.Lookup lookup) 方法,Java12 String方法示例Java 12 为 String 引入了以下新方法,以便于格式化。 Java12 indent(n)方法 根据传递的参数调整每

  • 问题内容: 我知道String [] args是作为参数传递给main的字符串数组。 但是,当您不将其包含为参数时(即使您不使用它),它也会引发异常。那么为什么需要它呢?另外,为什么不能是int []或boolean []? 问题答案: 这是一个字符串,因为命令行以文本形式表示。如果要将文本转换为整数或布尔值,则必须自己做- 操作系统或Java引导程序如何确切知道您希望如何解析所有内容?我想Jav

  • 我知道java中的字符串不是像int或float这样的普通变量,而是对象,但我的问题是为什么有必要这样做?为什么字符串不能像字符序列那样是普通变量?是什么东西让java设计师把string变成Object?

  • 问题内容: 我想在Java的String类中添加一个方法,以便我可以键入而不是以获得类似的信息。我也不想添加另一个派生类(例如)。 也许这种方法对您不利,但我个人讨厌使用。但是,无论如何,是否有可能向Java中的String类添加新方法? 感谢致敬。 问题答案: 是最后一个类,这意味着它不能扩展为可以在您自己的实现上工作。

  • 以下是方法列表及其描述。 Sr.No 方法和描述 1 String.prototype.startsWith(searchString,position = 0) 如果接收者以searchString开头,则返回true; 该位置允许您指定要检查的字符串的起始位置。 2 String.prototype.endsWith(searchString,endPosition = searchStrin

  • 我有一个实现可比较接口的类A,和一个扩展A的类B。我需要找到一种方法来覆盖类B中的。 我发现了一个类似的问题不能用可比的父子孙继承并试图实施提供的解决方案 A类: B类: 例外情况: 线程“main”java中出现异常。lang.ClassCastException:T4级。A不能转换为T4级。B(T4.A和T4.B在加载器“app”的未命名模块中)