List 和Array的转化

转载 2013年12月05日 17:44:18

         数组转换成为List

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

    ArrayList类型的数据转换为String[]

   mport 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]); 


   

Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。

   

   

在Java中提供了Collection和Map接口。其中List和Set继承了Collection接口;同时用Vector、ArrayList、LinkedList三个类实现List接口,HashSet、TreeSet实现Set接口。直接有HashTable、HashMap、TreeMap实现Map接口。

    Vector基于Array的List,性能也就不可能超越Array,并且Vector是“sychronized”的,这个也是Vector和ArrayList的唯一的区别。

    ArrayList:同Vector一样是一个基于Array的,但是不同的是ArrayList不是同步的。所以在性能上要比Vector优越一些。Android123提示大家适用于顺序性的查找

    LinkedList:不同于前面两种List,它不是基于Array的,作为链表数据结构方式,所以不受Array性能的限制。当对LinkedList做添加,删除动作的时候只要更改nextNode的相关信息就可以实现了所以它适合于进行频繁进行插入和删除操作。这就是LinkedList的优势,当然对于元素的位置获取等方面就逊色很多。

    List:

        1. 所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。例如:[ tom,1,c ];

        2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ];

        3. 所有的List中可以有null元素,例如[ tom,null,1 ];

        4. 基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作。

虽然Set同List都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是Set和List的根本区别。

     HashSet:HashSet的存储方式是把HashMap中的Key作为Set的对应存储项,HashMap的key是不能有重复的。HashSet能快速定位一个元素,但是放到HashSet中的对象需要实现hashCode()方法0。

    TreeSet:将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的。TreeSet不同于HashSet的根本是TreeSet是有序的。它是通过SortedMap来实现的。

    Set总结: 1. Set实现的基础是Map(HashMap); 2. Set中的元素是不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象,不能包含两个元素e1、e2(e1.equals(e2))。

    Map是一种把键对象和值对象进行关联的容器,Map有两种比较常用的实现: HashTable、HashMap和TreeMap。

    HashMap也用到了哈希码的算法,以便快速查找一个键,

    TreeMap则是对键按序存放,因此它有一些扩展的方法,比如firstKey(),lastKey()等。

    HashMap和Hashtable的区别。 HashMap允许空(null)键(key)或值(value),由于非线程安全,效率上可能高于Hashtable。 Hashtable不允许空(null)键(key)或值(value)。

List<T> 转化为DataTable,使用Array.ForEach()

public static DataTable ToDataTable(this IEnumerable list) { if (list == null ||...

Core Java (二十五) List与Array的相互转化,Set与Array的相互转换

List与Array的相互转化 List转化成Array 调用了List的toArray方法,有两个同名方法,其中Object[] toArray()返回一个Object类型的数组,但使用起来很不...

C# Array和ArrayList,List区别

  • 2011年12月17日 01:28
  • 274KB
  • 下载

Scala视频教程第3课、Array List实战

  • 2016年09月07日 11:17
  • 7.79MB
  • 下载

Java中Array、List的区别

Array、List的区别 Array—是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大 的,...

27-Object-List-Map-Array 转成json数据

  • 2017年02月13日 08:59
  • 1.69MB
  • 下载

Java中List与Array的转换

在Java项目开发过程中,集合之间的互相转换是非常常见的,其中两个比较典型的转换是List和Array之间的转换,本文主要介绍这二者之间的转换、其中存在的一些问题以及解决方案,本文JDK版本为1.8。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:List 和Array的转化
举报原因:
原因补充:

(最多只允许输入30个字)