将String数组转换成ArrayList

  1. package org.donkey.app.ListToArrayList;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Arrays;  
  5. import java.util.List;  
  6. /** 
  7.  * Created with IntelliJ IDEA. 
  8.  * User: Donkey 
  9.  * Date: 13-11-24 
  10.  * Time: 上午10:44 
  11.  * 用于将String类型的数组转变为ArrayList 
  12.  */  
  13. public class StringArrayToArrayListTest {  
  14.     public static void main(String[] args){  
  15.         StringArrayToArrayListTest.test1();  
  16.         StringArrayToArrayListTest.test2();  
  17.         StringArrayToArrayListTest.test3();  
  18.     }  
  19.   
  20.     public static void test1(){  
  21.         String[] words = {"ace""boom""crew""dog""eon"};  
  22.   
  23.         List wordList = Arrays.asList(words);  
  24.         //wordList.add("1");  
  25.         for (String e : wordList){  
  26.             System.out.println(e);  
  27.         }  
  28.     }  
  29.   
  30.     public static void test2(){  
  31.         String[] words = {"ace""boom""crew""dog""eon"};  
  32.   
  33.         List wordList = new ArrayList(Arrays.asList(words));  
  34.         wordList.add("1");  
  35.         for (String e : wordList){  
  36.             System.out.println(e);  
  37.         }  
  38.     }  
  39.   
  40.     public static void test3(){  
  41.         String[] words = {"ace""boom""crew""dog""eon"};  
  42.   
  43.         List wordList = new ArrayList(words.length);  
  44.   
  45.         for (String e : words){  
  46.             wordList.add(e);  
  47.         }  
  48.         wordList.add("2");  
  49.         for (String e : wordList){  
  50.             System.out.println(e);  
  51.         }  
  52.     }  
  53. }  

将三种方式的算法对比一下,我们可以分析出test1中的方法是效率最高的,因为他不需要复制array中的内容,而是直接返回一个List,但这种方式是不能添加和删除元素的。

test2和test3本质上是一种方式,它们将创建array的副本到ArrayList中,当然就可以实现增删功能。

两种方式要根据自己的需求而定。


PS:使用方法一的时候出现了下面的错误,最后使用方法二没有问题

03-09 12:54:42.699: E/AndroidRuntime(21587): FATAL EXCEPTION: AsyncTask #1
03-09 12:54:42.699: E/AndroidRuntime(21587): Process: com.clockrock.freeshare, PID: 21587
03-09 12:54:42.699: E/AndroidRuntime(21587): java.lang.RuntimeException: An error occured while executing doInBackground()
03-09 12:54:42.699: E/AndroidRuntime(21587): at android.os.AsyncTask$3.done(AsyncTask.java:300)
03-09 12:54:42.699: E/AndroidRuntime(21587): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
03-09 12:54:42.699: E/AndroidRuntime(21587): at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
03-09 12:54:42.699: E/AndroidRuntime(21587): at java.util.concurrent.FutureTask.run(FutureTask.java:242)
03-09 12:54:42.699: E/AndroidRuntime(21587): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
03-09 12:54:42.699: E/AndroidRuntime(21587): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
03-09 12:54:42.699: E/AndroidRuntime(21587): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
03-09 12:54:42.699: E/AndroidRuntime(21587): at java.lang.Thread.run(Thread.java:848)
03-09 12:54:42.699: E/AndroidRuntime(21587): Caused by: java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
03-09 12:54:42.699: E/AndroidRuntime(21587): at com.clockrock.pla.activity.PlaImageFragment$ContentTask.parseNewsJSON(PlaImageFragment.java:113)
03-09 12:54:42.699: E/AndroidRuntime(21587): at com.clockrock.pla.activity.PlaImageFragment$ContentTask.doInBackground(PlaImageFragment.java:60)
03-09 12:54:42.699: E/AndroidRuntime(21587): at com.clockrock.pla.activity.PlaImageFragment$ContentTask.doInBackground(PlaImageFragment.java:1)
03-09 12:54:42.699: E/AndroidRuntime(21587): at android.os.AsyncTask$2.call(AsyncTask.java:288)
03-09 12:54:42.699: E/AndroidRuntime(21587): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
03-09 12:54:42.699: E/AndroidRuntime(21587): ... 4 more

你可能感兴趣的:(Android学习)