从Arraylist到Array

我想知道是否安全/build议从ArrayList转换为数组? 我有一个每行一个string的文本文件:

1236 1233 4566 4568 .... 

我想将它们读入数组列表中,然后将其转换为数组。 这样做是合理的还是合法的?

谢谢

是的,将ArrayList转换为Array是安全的 。 这是否是一个好主意取决于您的预期用途。 你需要ArrayList提供的操作吗? 如果是这样,保持一个ArrayList 。 否则转换!

 ArrayList<Integer> foo = new ArrayList<Integer>(); foo.add(1); foo.add(1); foo.add(2); foo.add(3); foo.add(5); Integer[] bar = foo.toArray(new Integer[foo.size()]); System.out.println("bar.length = " + bar.length); 

输出

 bar.length = 5 

这是最好的方法(恕我直言)。

 List<String> myArrayList = new ArrayList<String>(); //..... String[] myArray = myArrayList.toArray(new String[myArrayList.size()]); 

这段代码也可以工作:

 String[] myArray = myArrayList.toArray(new String[0]); 

但效率较低:string数组创build两次:第一次创build零长度数组,然后创build,填充和返回实际大小的数组。 所以,如果你知道所需的大小(从list.size() )你应该创build一个足够大的数组来放置所有的元素。 在这种情况下,它不会被重新分配。

 ArrayList<String> myArrayList = new ArrayList<String>(); ... String[] myArray = myArrayList.toArray(new String[0]); 

不pipe这个“好主意”是否真的取决于你的用例。

假设v是一个ArrayList:

 String[] x = (String[]) v.toArray(new String[0]); 
 ArrayList<String> a = new ArrayList<String>(); a.add( "test" ); @SuppressWarnings( "unused") String[] array = (String[]) a.toArray(); 

这取决于你想要达到什么,如果你需要操纵数组,那么比保留ArrayList中的string花费更多的工作量。 你也可以通过list.get( index );随机访问一个ArrayList list.get( index );

Collection接口包含toArray()方法,用于将新集合转换为数组。 这种方法有两种forms。 无参数版本将返回Object数组中的集合元素:public Object [] toArray()。 返回的数组不能转换为任何其他数据types。 这是最简单的版本。 第二个版本要求你传入你想要返回的数组的数据types:public Object [] toArray(Object type [])。

  public static void main(String[] args) { List<String> l=new ArrayList<String>(); l.add("A"); l.add("B"); l.add("C"); Object arr[]=l.toArray(); for(Object a:arr) { String str=(String)a; System.out.println(str); } } 

作为参考,请参阅此链接http://techno-terminal.blogspot.in/2015/11/how-to-obtain-array-from-arraylist.html

一种方法是在第一个for循环内添加第二个for循环。 喜欢这个:

 static String[] SENTENCE; public static void main(String []args) throws Exception{ Scanner sentence = new Scanner(new File("assets/blah.txt")); ArrayList<String> sentenceList = new ArrayList<String>(); while (sentence.hasNextLine()) { sentenceList.add(sentence.nextLine()); } sentence.close(); String[] sentenceArray = sentenceList.toArray(new String[sentenceList.size()]); // System.out.println(sentenceArray.length); for (int r=0;r<sentenceArray.length;r++) { SENTENCE = sentenceArray[r].split("(?<=[.!?])\\s*"); //split sentences and store in array for (int i=0;i<SENTENCE.length;i++) { System.out.println("Sentence " + (i+1) + ": " + SENTENCE[i]); } } }