Java中的HashSet toArray(T[])方法示例
Java中HashSet类的 toArray(T[]) 方法用于将与HashSet相同元素的数组形成一个数组。它返回一个包含此HashSet中所有元素的数组,按照 正确的顺序 排列;返回的数组的运行时类型是指定的数组类型。如果HashSet适合指定的数组,则返回其中。否则,将分配具有指定数组的运行时类型和该HashSet大小的新数组。
如果HashSet适合具有足够空间的指定数组(即,数组具有比HashSet更多的元素),则在HashSet结束后紧接着的数组元素将设置为null。(如果调用者知道HashSet不包含任何null元素,这对于确定HashSet的长度仅有用。)
语法:
public <T> T[] toArray(T[] a)
参数: 该方法接受一个名为arr[]的参数,用于将HashSet元素存储到其中,如果足够大;否则,将为此目的分配与运行时类型相同的新数组。
返回值: 该方法返回一个包含与HashSet相似元素的数组。
异常: 该方法可能会抛出两种类型的异常:
- ArrayStoreException:当所述数组是不同类型且无法与HashSet中提到的元素进行比较时。
- NullPointerException:如果数组为Null,则抛出此异常。
下面的程序说明了HashSet.toArray(arr[])方法的工作原理。
程序1:当数组与HashSet大小相同时
// Java code to illustrate toArray(arr[])
import java.util.*;
public class HashSetDemo {
public static void main(String args[])
{
// Creating an empty HashSet
HashSet<String>
hashSet = new HashSet<String>();
// Use add() method to add
// elements into the HashSet
hashSet.add("Welcome");
hashSet.add("To");
hashSet.add("Geeks");
hashSet.add("For");
hashSet.add("Geeks");
// Displaying the HashSet
System.out.println("The HashSet: "
+ hashSet);
// Creating the array and using toArray()
String[] arr = new String[5];
arr = hashSet.toArray(arr);
// Displaying arr
System.out.println("The arr[] is:");
for (int j = 0; j < arr.length; j++)
System.out.println(arr[j]);
}
}
The HashSet: [Geeks, For, Welcome, To]
The arr[] is:
Geeks
For
Welcome
To
null
程序2:当数组小于HashSet大小时
// Java代码示例:toArray(arr[])
import java.util.*;
public class HashSetDemo {
public static void main(String args[])
{
// 创建一个空的HashSet
HashSet<String>
hashSet = new HashSet<String>();
// 使用add()方法将元素添加到HashSet中
hashSet.add("Welcome");
hashSet.add("To");
hashSet.add("Geeks");
hashSet.add("For");
hashSet.add("Geeks");
// 显示HashSet
System.out.println("The HashSet: "+hashSet);
// 创建数组并使用toArray()
String[] arr = new String[1];
arr = hashSet.toArray(arr);
// 显示arr
System.out.println("The arr[] is:");
for (int j = 0; j < arr.length; j++)
System.out.println(arr[j]);
}
}
The HashSet: [Geeks, For, Welcome, To]
The arr[] is:
Geeks
For
Welcome
To
程序3:当数组大于HashSet的大小时
// Java代码示例:toArray(arr[])
import java.util.*;
public class HashSetDemo {
public static void main(String args[])
{
// 创建一个空的HashSet
HashSet<String>
hashSet = new HashSet<String>();
// 使用add()方法将元素添加到HashSet中
hashSet.add("Welcome");
hashSet.add("To");
hashSet.add("Geeks");
hashSet.add("For");
hashSet.add("Geeks");
// 显示HashSet
System.out.println("The HashSet: "+hashSet);
// 创建数组并使用toArray()
String[] arr = new String[10];
arr = hashSet.toArray(arr);
// 显示arr
System.out.println("The arr[] is:");
for (int j = 0; j < arr.length; j++)
System.out.println(arr[j]);
}
}
The HashSet: [Geeks, For, Welcome, To]
The arr[] is:
Geeks
For
Welcome
To
null
null
null
null
null
null
程序4:演示NullPointerException
// Java代码示例:toArray(arr[])
import java.util.*;
public class HashSetDemo {
public static void main(String args[])
{
// 创建一个空的HashSet
HashSet<String>
hashSet = new HashSet<String>();
// 使用add()方法将元素添加到HashSet中
hashSet.add("Welcome");
hashSet.add("To");
hashSet.add("Geeks");
hashSet.add("For");
hashSet.add("Geeks");
// 显示HashSet
System.out.println("The HashSet: "+hashSet);
try {
// 创建数组
String[] arr = null;
// 使用toArray()
// 因为arr为null
// 因此会抛出异常
arr = hashSet.toArray(arr);
// 显示arr
System.out.println("The arr[] is:");
for (int j = 0; j < arr.length; j++)
System.out.println(arr[j]);
}
catch (Exception e) {
System.out.println("Exception: " + e);
}
}
}
The HashSet: [Geeks, For, Welcome, To]
Exception: java.lang.NullPointerException