集合与数组的区别?
1.长度区别
数组长度 固定
集合长度可变
2.元素类型不同
数组可以存储基本数据类型和引用数据类型
集合只能存储引用数据类型
3.存储内容的不同
数组存储只能存储同一类型
集合可以存储不同类型
List和Set继承了Collection,而Collection是一个接口,所以只能通过它的子类进行实例化;
例子1:
import java.util.ArrayList;
import java.util.List;
public class Collectiondemo1 {
public static void main(String[] args) {
//注意:要导入util的包,而不是awt的包
List list=new ArrayList();
System.out.println("1.可以存储不同类型的内容");
list.add("美");
list.add(20);
System.out.println(list);
}
}
可以向集合里添加对象
例子2:
public class Collectiondemo2 {
public static void main(String[] args) {
Student s1=new Student(18,“美”);
Student s2=new Student(22,“Winston”);
Student s3=new Student(26,“白百合”);
Student s4=new Student(22,“ash”);
Student s5=new Student(12,“仓鼠”);
//创建一个学生类数组
Student[] stu=new Student[5];
stu[0]=s1;
stu[1]=s2;
stu[2]=s3;
stu[3]=s4;
stu[4]=s5;
//遍历数组
for(int i=0;i<stu.length;i++) {
System.out.println(stu[i].getAge()+"--------"+stu[i].getName());
}
System.out.println("------------1-----------");
//创建一个集合对象,添加学生对象
List list=new ArrayList();
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5);
System.out.println(list.getClass().getName());//获取list所在的当前类名
Iterator it=list.iterator();//创建迭代器,看下第四个例子
while(it.hasNext()) {
Student ss=(Student)it.next();
System.out.println(ss.getAge()+"----------"+ss.getName());
}
}
}
例子:3:
public class Collectiondemo3 {
public static void main(String[] args) {
Collection coll1=new ArrayList();
coll1.add("大朋友1");
coll1.add("大朋友2");
coll1.add("大朋友3");
coll1.add("大朋友4");
coll1.add("大朋友5");
coll1.add("大朋友6");
coll1.add("大朋友7");
System.out.println(coll1);
System.out.println("-----------1----------");
Collection coll2=new ArrayList();
coll2.add("小样");
coll2.add("旭宝");
coll2.add("沙雕");
System.out.println(coll2);
//.addAll()方法将coll1的全部元素加入到coll2中
System.out.println(coll2.addAll(coll1));//boolean addAll();方法返回布尔值,表示添加成功
System.out.println(coll2);
System.out.println("------------2-----------");
//遍历
Object[] obj=coll2.toArray();//创建一个Object数组,将coll2转换成数组存进去
for(int i=0;i<obj.length;i++) {
System.out.println(obj[i]);
//向下转型
String s=(String)obj[i];//Object强转为String类型
System.out.println(s);
}
}
}
迭代器 例子4:
public class Iteratordemo {
public static void main(String[] args) {
//创建一个集合对象
Collection coll1=new ArrayList();
String s1="HelloWorld";
//添加集合对象
coll1.add(s1);
coll1.add("大朋友1");
coll1.add("大朋友2");
coll1.add("大朋友3");
coll1.add("大朋友4");
coll1.add("大朋友5");
coll1.add("大朋友6");
coll1.add("大朋友7");
//创建迭代器并且赋值
Iterator it =coll1.iterator();
System.out.println("-----------1----------");
//笨办法遍历
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());
System.out.println("-----------2-----------");
//for遍历
while(it.hasNext()) {
/*
.hasNext()方法,下一个位置还有元素则返回true,没有返回false,一开始的时候将向一个指针,指向第一个元素的前面,然后一直指下去,直到没有元素返回false结束循环
*/
System.out.println(it.next());//输出下一个元素
String s2=(String) it.next();//将Object强转为String,然后输出
System.out.println(s2);
}
System.out.println("-----------3------------");
//因为迭代器使用完了,里面也就没有元素了,需要重新调用.iterator()方法,放回一个新的迭代器
it=coll1.iterator();
while(it.hasNext()) {
String s2=(String) it.next();
System.out.println(s2);
}
}
}