import java.util.*;
public class ArrayDemo
{
public static void main(String args[]){
/*
这个简单的范例展示集合的一个基础-他们用于操纵一列对象,
其中的每个对象是一个类或者接口类型。因此,一个ArrayList可以包含Object,String,Float以及Runnable类型的对象。
集合类不能用于原始数据类型的列表,例如整型数组。
*/
//第一个技术是排序。java.util.Arrays类包含一套排序和查找数组的类方法
int vec [] ={37 ,47 ,23,-5,19,56};
Arrays.sort(vec);
for(int i =0;i<vec.length ;i++){
System.out.println(vec[i]);
}
//演示程序初始化一个整数数组然后调用Arrays.sort升序排序那个数组
//类似的,你可以在排完序的数组上进行二分法查找:
//Arrays类包含用来操作数组(比如排序和搜索)的各种方法
//类还包含一个允许将数组作为列表来查看的静态工厂。
int slot = Arrays.binarySearch(vec,35);
slot = -(slot + 1);//文档中的规定
/*
这个演示程序以参数35调用查找方法,而那个参数在数组中不存在,方法返回值-4,如果这个
值加一再取其负数就得到3,这就是35应该被插入到数组中的位置,换言之,
值-5, 19和23在数组中占据的位置是0,1和2。因此值35应该在索引3的位置,而37, 47以及56顺延。
搜索方法并不进行实际的插入操作而只是指出应该在何处插入。
*/
System.out.println("insertion point = " + slot);
/*
1.List转换成为数组。(这里的List是实体是ArrayList)
调用ArrayList的toArray方法。
public Object[] toArray()
public <T> T[] toArray(T[] a)返回一个按照正确的顺序包含此列表中所有元素的数组;返回
数组的运行时类型就是指定数组的运行时类型。如果列表能放入指定的数组,则返回放入此列表元素
的数组。否则,将根据指定数组的运行时类型和此列表的大小分配一个新的数组。
如果指定的数组能容纳列表并有剩余空间(即数组的元素比列表的多),那么会将数组中紧跟在
集合末尾的元素设置为 null。这对确定列表的长度很有用,但只 在调用方知道列表中不包含任何
null 元素时才有用。
*/
List list = new ArrayList();
list.add("1");
list.add("2");
System.out.println(list);
final int size=list.size();
String[]arr = (String[])list.toArray(new String[size]);
for(int i =0;i<arr.length ;i++){
System.out.println(arr[i]);
}
//2.数组转换成为List。
//调用Arrays的asList()方法。
String [] arr1 = new String[]{"1","2"};
List list1=Arrays.asList(arr1);
System.out.println(list1);
/*public static <T> List<T> asList(T... a)返回一个受指定数组支持的固定大小的列表。(对
返回列表的更改会“直写”到数组。)此方法同 Collection.toArray 一起,充当了基于数组的 API
与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess。
此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:
List stooges = Arrays.asList("Larry", "Moe", "Curly");
*/
Object v[] = {new Integer(37),new Integer(47)};
List ls=Arrays.asList(v);
ls.set(1,new Integer(57));
for(int i=0;i<v.length ;i++){
System.out.println(v[i]);
}
/*
在这个程序中,vec是一个对象数组,包含Integer(37)和Integer(47),
然后Arrays.asList被调用。它返回一个集合(List接口类型),
使用数组作为集合的后台存储。换言之,ArrayList这样的集合类型在它内部有
某种存储类型去存储集合元素。在这个例子中,使用的存储类型是作为参数传。
*/
}
}