Day12_20
2016-12-24 本文已影响0人
yangyangyjj
容器(集合框架)--承载其他对象的对象
list容器
package Day12_20_01;
import java.util.*;
/*
*容器(集合框架、Container)承载其他对象的对象;
*容器不能放基本数据类型,只能放类型对象的 引用;
*Collection
* -List
* -ArrayList
* -LinkedList
* -Set
*/
class Test01
{
/*
* list两个实现版本的比较;
* ArrayList-底层实现是一个数组,使用连续的内存 可以实现随机存取
* LinkedList-底层实现是一个双向循环链表,可以使用碎片内存,不能随即存取,
* 但是增删元素是需要修改引用即可,所以增删元素时有更好的效果
*/
public static void main(String[] args)
{
//List<Object> list=new ArrayList<Object>();
//从java7开始,构造器后面的泛型参数可以省略--砖石语法
List<Object> list=new ArrayList<>();
list.add("apple");
list.add("grape");
list.add("banana");
list.add("apple");
//容器中只能放对象的引用,不能放基本数据类型,因此向容器里添加基本数据类型时会
//自动装箱(list.add(new Integer(100)));所谓自动装箱就是将基本数据类型处理成对应的包装类型
list.add(100);
list.add(true);
list.add(3.14);
//基本类型-->包装类型 byte-->Byte short-->Short int-->Integer long-->Long
//float-->Float double-->Double char-->Character boolean-->Boolean
list.add(new Date());
//遍历容器的四种方法:
System.out.println("======java1.8======");
// //从java1.8开始可以给容器发送forEach消息对元素进行操作,
// //forEach方法的参数可是是方法引用也可以是lambda表达式
// //方法引用
list.forEach(System.out::println);
// //lambda表达式
// list.forEach(e->{
// //这里虽然可以将字符串元素以大写的形式打印出来,但并不改变容器里的元素()
// System.out.println(((String) e).toUpperCase());
// });
System.out.println("====普通for循环======");
for (int i = 0; i < list.size(); i++)
{
System.out.print(list.get(i)+" ");
}
System.out.println();
System.out.println("===for-each循环=====");
for (Object object : list)
{
System.out.println(object.getClass());
}
//指定位置增加元素
list.add(0, "狗屎");
//已指定对象名的方式删除元素时,若是小数,自动转化其包装类型,若是整数,必须手动转化为其包装类型
//否则java虚拟机会认为是删除指定位置的元素;
list.remove(3.14);
list.remove(new Integer(100));
//指定位置删除
list.remove(0);
//指定对象名删除,两个apple会删除前面一个apple
list.remove("apple");
//<String>:泛型参数,指定该容器只能装String类型的元素
//从java5开始,容器可以指定泛型参数来限定容器中对象应用的类型
//带泛型参数的的容器比不带泛型参数的容器使用上更加方便
List<String > temp= Arrays.asList("grape","banana");
list.retainAll(temp);//根据指定参考系保留所有
//list.removeAll(temp);//根据指定参考系删除所有
System.out.println("======迭代器========");
Iterator<Object> iterator=list.iterator();
while(iterator.hasNext())
{
System.out.print(iterator.next()+" ");
}
//清空
list.clear();
}
自动装箱与自动拆箱
package Day12_20_01;
import java.util.ArrayList;
import java.util.List;
public class Test02
{
public static void main(String[] args)
{
Object object1=100;
System.out.println(object1.getClass());
Integer object2=(Integer)object1;
int a=object2;//自动转换
int b=(Integer)object1;//强转
System.out.println(a);
System.out.println(b);
//自动装箱(auto-boxing)int-->Integer
List<Integer> list=new ArrayList<>();
for(int i=0;i<10;i++)
{
list.add((int)(Math.random()*20));
}
list.sort(null);
for(Integer x:list)
{
//自动拆箱(auto-unboxing):Integer-->int
//x本来是属于一个对象,与10(int)做比较是,自动拆箱成int基本类型
if(x>10)
{
System.out.print(x+" ");
}
}
}
}