1:集合的嵌套遍历
需求:
我们班有学生,每一个学生是不是一个对象。所以我们可以使用一个集合表示我们班级的学生。ArrayList
但是呢,我们旁边是不是还有班级,每个班级是不是也是一个ArrayList。
而我现在有多个ArrayList。也要用集合存储,怎么办呢?
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
//测试类
public class Demo2 {
public static void main(String[] args) {
//一班学生
Student s1=new Student("张三",15);
Student s2=new Student("李四",17);
Student s3=new Student("王五",16);
//创建一班学生集合,存储学生对象
Collection student1=new ArrayList();
student1.add(s1);
student1.add(s2);
student1.add(s3);
System.out.println("一班的学生有:"+student1);//一班的学生有:[张三-----15, 李四-----17, 王五-----16]
//二班学生
Student s4=new Student("甄姬",15);
Student s5=new Student("貂蝉",17);
Student s6=new Student("王昭君",16);
//创建二班学生集合,存储学生对象
Collection student2=new ArrayList();
student2.add(s4);
student2.add(s5);
student2.add(s6);
System.out.println("二班的学生有:"+student2);//二班的学生有:[甄姬-----15, 貂蝉-----17, 王昭君-----16]
//创建年级集合,存储两个班的集合对象
Collection grade=new ArrayList();
grade.add(student1);
grade.add(student2);
System.out.println("显示全年级学生:"+grade);//[[张三-----15, 李四-----17, 王五-----16], [甄姬-----15, 貂蝉-----17, 王昭君-----16]]
//遍历元素
Iterator it=grade.iterator();
while(it.hasNext()){
ArrayList a=(ArrayList)it.next();
Iterator it2=a.iterator();
while(it2.hasNext()){
System.out.println(it2.next());
}
}
}
}
//学生类
class Student{
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public Student() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//必须重写toString方法,不然只显示存储地址
@Override
public String toString() {
return this.name+"-----"+this.age;
}
}
2:获取10个1-20之间的随机数,要求不能重复
import java.util.ArrayList;
import java.util.Collection;
import java.util.Random;
public class Demo3 {
public static void main(String[] args) {
Random r=new Random();
boolean flag=true;
Collection c=new ArrayList();
while(flag){
int n=r.nextInt(20)+1;
//当集合中不包含产生的随机数时,向其中加入
if(!c.contains(n)){
c.add(n);
}
//如果已经存储够了10个数,则结束
if(c.size()==10){
break;
}
}
System.out.println(c);
}
}
3:使用ArrayList集合存储自定义对象并遍历(三种方式去实现)
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
//测试类
public class Demo4 {
public static void main(String[] args) {
RichMan r1=new RichMan("马云");
RichMan r2=new RichMan("王林");
RichMan r3=new RichMan("潘石屹");
RichMan r4=new RichMan("刘强东");
List c=new ArrayList();
c.add(r1);
c.add(r2);
c.add(r3);
c.add(r4);
//方法一:运用toArray()方法遍历
Object [] o=c.toArray();
for(int i=0;i<o.length;i++){
RichMan richman=(RichMan)o[i];
System.out.print(richman+",");//马云,王林,潘石屹,刘强东,
}
System.out.println("");
//方法二:运用集合的get()方法
for(int i=0;i<c.size();i++){
System.out.print(c.get(i)+",");//马云,王林,潘石屹,刘强东,
}
System.out.println("");
//方法三:运用Iterator的hasNext()方法和next()方法
Iterator it=c.iterator();
while(it.hasNext()){
System.out.print(it.next()+",");//马云,王林,潘石屹,刘强东,
}
}
}
class RichMan{
private String name;
public RichMan() {
super();
// TODO Auto-generated constructor stub
}
public RichMan(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return this.name;
}
}