android小知识:ArrayList和数组之间的转换


List----->数组
开发中不免碰到List与数组类型之间的相互转换,举一个简单的例子:
package test.test1;
import java.util. ArrayList;
import java.util.List;
public class Test {

/**
* @param args
*/
public static void main(String[] args) {
List list=new ArrayList();
list.add("王利虎");
list.add("张三");
list.add("李四");
int size=list.size();
String[] array=new String[size];
for(int i=0;i<list.size();i++){
array[i]=(String)list.get(i);
}
for(int i=0;i<array.length;i++){
System.out.println(array[i]);
}
}
}

正如上面所列举的,当要将 ArrayList类型的数据转换为String[]的时候,必须对List类型进行遍历,其实没有这种必要,List提供给我们一个很好的方法解决List转换成为数组的问题,不防再看一个例子:
package test.test1;

import java.util. ArrayList;
import java.util.List;

public class Test {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("王利虎");
list.add("张三");
list.add("李四");
int size=list.size();
String[] array = (String[])list.toArray(new String[size]);
for(int i=0;i<array.length;i++){
System.out.println(array[i]);
}
}
}
你是否发现这才是你想要的呢?其实很简单, ArrayList提供public <T> T[] toArray(T[] a)方法返回一个按照正确的顺序包含此列表中所有元素的数组;返回数组的运行时类型就是指定数组的运行时类型。如果列表能放入指定的数组,则返回放入此列表元素的数组。否则,将根据指定数组的运行时类型和此列表的大小分配一个新的数组。
如果指定的数组能容纳列表并有剩余空间(即数组的元素比列表的多),那么会将数组中紧跟在集合末尾的元素设置为 null。这对确定列表的长度很有用,但只 在调用方知道列表中不包含任何 null 元素时才有用。
  
数组--->List
 那么又怎么将数组转换成为List呢?不防再看一个小小的例子,如下所示:
package test.test1;
import java.util. ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
String[] array=new String[3];
array[0]="王利虎";
array[1]="张三";
array[2]="李四";
List<String> list=new ArrayList<String>();
for(int i=0;i<array.length;i++){
list.add(array[i]);
}
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
你是不发现很费事啊?其实数组转换成为List的问题Arrays对象也提供给我们public static <T> List<T> asList(T... a)供我们调用, 试运行下面的例子:
package test.test1;

import java.util.Arrays;
import java.util.List;

public class Test {
public static void main(String[] args) {
String[] array=new String[3];
array[0]="王利虎";
array[1]="张三";
array[2]="李四";
List<String> list=Arrays.asList(array);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}


}
}
    简单吧,asList方法返回一个受指定数组支持的固定大小的列表,此方法同 Collection.toArray 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess。除此之外, 此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:
  package test.test1;
import java.util.Arrays;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
List<String> list = Arrays.asList("王利虎","张三","李四");
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}


初学Android,练习ArrayList使用  

package com.mowo;

import java.util.ArrayList;
import java.util.Iterator;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class TestWorkspace extends Activity implements OnClickListener {

private Button mButton1;
private Button mButton2;
private Button mButton3;
/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
     
        initViews();
    }

    @Override
    protected void onResume() {
        super.onResume();
    
TextView textView = (TextView)findViewById(R.id.hello);
        textView.setText("Android practice");
    }

    private void initViews() {
    
mButton1 = (Button)findViewById(R.id.button1);
mButton1.setOnClickListener(this);

mButton2 = (Button)findViewById(R.id.button2);
mButton2.setOnClickListener(this);
mButton3 = (Button)findViewById(R.id.button3);
mButton3.setOnClickListener(this);
    }

public void onClick(View view) {
    
StringBuffer buffer = new StringBuffer();
switch (view.getId()) {
case R.id.button1: 
buffer.append("我是Android ");
buffer.append("别叫我symbian");
Toast.makeText(this, buffer.toString(), Toast.LENGTH_SHORT).show();
break;
case R.id.button2:
TextCache cache = new TextCache();
buffer.append(cache.a);
buffer.append(cache.b);
Toast.makeText(this, buffer.toString(), Toast.LENGTH_SHORT).show();
break;
case R.id.button3:
// buffer.append("威哥 ");
// buffer.append("你真棒 你家的猫更棒!");
// Toast.makeText(this, buffer.toString(), Toast.LENGTH_SHORT).show();
arrayListText(buffer);
break;
default:
break;
}
}
    
final static class TextCache {
String a = "诺基亚 + 微软 = ";
String b = " 一个更比一个惨";
}
// Android ArrayList练习
public void arrayListText(StringBuffer buffer){
String mStr1 = "Hello1", mStr2 = "Hello2", mStr3 = "Hello3", mStr4 = "Hello4", mStr5 = "Hello5",
      mStr6 = "Hello6", mStr7 = "Hello7", mStr8 = "Hello8", mStr9 = "Hello9", mStr10 = "Hello10";
ArrayList<String> strArray = new ArrayList<String>();
strArray.add(mStr1);
strArray.add(mStr2);
strArray.add(mStr3);
strArray.add(mStr4);
strArray.add(mStr5);
strArray.add(mStr6);
strArray.add(mStr7);
strArray.add(mStr8);
strArray.add(mStr9);
strArray.add(mStr10);
StringBuffer allHello = new StringBuffer();
StringBuffer Hello13579 = new StringBuffer();
StringBuffer Hello246810 = new StringBuffer();
Iterator<String> it = strArray.iterator();
int i = 1;
do{
if(i % 2 == 1){
Hello13579.append(it.next());
Hello13579.append(" ");
i ++;
}
else{
Hello246810.append(it.next());
Hello246810.append(" ");
i ++;
}
}while(it.hasNext());
allHello.append(Hello13579);
allHello.append(Hello246810);
buffer.append(allHello);
Toast.makeText(this, buffer.toString(), Toast.LENGTH_SHORT).show();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值