从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]); } } }