JAVA集合框架
Collection接口:存储一组不唯一、无序的对象
List接口存储一组不唯一、有序(插入顺序)的对象
Set接口存储一组唯一、无序的对象.
List
在示例中,首先创建了狗狗对象,并通过Set赋值。
//创建dog对象 Dog dog1=new Dog(); dog1.setName("小草1"); dog1.setStrain("拉布拉多"); Dog dog2=new Dog(); dog2.setName("小花2"); dog2.setStrain("泰迪");
然后通过List创建集合对象:
List<Dog> list=new ArrayList<Dog>();
list.add(dog1);
list.add(dog2);
list.size()方法可以判断实际元素的个数,把值赋值给一个变量并输出:
int num=list.size(); System.out.println(num);
可以通过list.remove();移除数组中的元素,括号内可以是元素下标,也可以元素对象值。
输出集合中的元素的方式有3种,分别是:
1、通过for循环遍历输出集合中的元素
2、使用foreach,增强for循环输出集合中的元素
3、使用迭代器循环输出集合中的元素
首先是for循环:
for (int i = 0; i < list.size(); i++) { //取出集合中的每一个元素 Object object=list.get(i); //转化为真实的子类对象(Dog) if(object instanceof Dog){ //强制类型转换 Dog dog=(Dog)object; //输出狗的信息 System.out.println(dog); } }
普通for循环遍历集合需要注意的是,在循环输出前,需要使用instanceof关键字转化为真实的子类对象,然后强制类型转换,输出狗的信息。
foreach循环
foreach循环总得来说比较方便,不可忽视的是仍然需要使用instanceof关键字进行判断。
for (Object object : list) { if(object instanceof Dog){ //强制类型转换 Dog dog=(Dog)object; //输出狗的信息 System.out.println(dog); } }
迭代器的使用:
使用Iterator,首先判断集合中是否有元素,进而得到集合中的每一个值。
Iterator its=list.iterator(); while (its.hasNext()) { Object obj = its.next(); System.out.println(obj); }
程序最终的输出结果为:
狗的名字 狗的品种
小班3 哈士奇
小草1 拉布拉多
LinkedList集合操作
LinkedList list=new LinkedList(); list.add(staff1); list.add(staff2);
list.addFirst(1000);//添加到列表的第一个位置 list.removeFirst();//移除第一个 list.removeLast();//移除最后一个 list.push("222");//增加元素 list.poll();//获取并移除第一个
ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高。
LinkedList的特殊方法:
void addFirst(Object o) 在列表的首部添加元素
void addLast(Object o) 在列表的末尾添加元素
Object getFirst() 返回列表中的第一个元素
Object getLast() 返回列表中的最后一个元素
Object removeFirst() 删除并返回列表中的第一个元素
Object removeLast() 删除并返回列表中的最后一个元素
ArrayList和LinkedList分别在何时使用?
ArrayList:
遍历元素和随机访问元素的效率比较高
插入、删除等操作频繁时性能低下
LinkedList
插入、删除元素时效率较高
查找效率较低
集合泛型的示例:
//要求放入INT类型的数据 Integer List<Integer> list=new ArrayList<Integer>();
valueOf方法,把数字转换成字符串
list1.add(String.valueOf(1000));
泛型要求添加数据,必须是指定的数据类型。