1:集合的嵌套遍历
需求:
我们班有学生,每一个学生是不是一个对象。所以我们可以使用一个集合表示我们班级的学生。ArrayList<Student>
但是呢,我们旁边是不是还有班级,每个班级是不是也是一个ArrayList<Student>。
需求:
我们班有学生,每一个学生是不是一个对象。所以我们可以使用一个集合表示我们班级的学生。ArrayList<Student>
但是呢,我们旁边是不是还有班级,每个班级是不是也是一个ArrayList<Student>。
而我现在有多个ArrayList<Student>。也要用集合存储,怎么办呢?
package homework;
import java.util.ArrayList;
public class Work1 {
public static void main(String[] args) {
// 创建集合
ArrayList<ArrayList<Student>> bigArrayList = new ArrayList<ArrayList<Student>>();
// 创建第一个班级学生集合
ArrayList<Student> firstArrayList = new ArrayList<Student>();
// 创建学生
Student s1 = new Student("杨晓洲", 21);
Student s2 = new Student("郭子正", 22);
Student s3 = new Student("邓聪", 20);
// 班级添加学生
firstArrayList.add(s1);
firstArrayList.add(s2);
firstArrayList.add(s3);
// 第一个班级添加大集合
bigArrayList.add(firstArrayList);
// 创建第二个班级学生集合
ArrayList<Student> secondArrayList = new ArrayList<Student>();
// 创建学生
Student s11 = new Student("王泽", 18);
Student s22 = new Student("孟河", 20);
Student s33 = new Student("齐旋", 22);
// 班级添加学生
firstArrayList.add(s11);
firstArrayList.add(s22);
firstArrayList.add(s33);
// 第二个班级添加大集合
bigArrayList.add(secondArrayList);
// 遍历集合
for (ArrayList<Student> array : bigArrayList) {
for (Student s : array) {
System.out.println(s.getName()+"---"+s.getAge());
}
}
}
}
package homework;
public class Student {
private String name;
private int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
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;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
2:获取10个1-20之间的随机数,要求不能重复
package homework;
import java.util.ArrayList;
import java.util.Random;
public class Work2 {
public static void main(String[] args) {
// 创建产生随机数的对象
Random r = new Random();
// 创建一个存储随机数的集合。
ArrayList<Integer> array = new ArrayList<Integer>();
// 定义一个统计变量。从0开始。
int count = 0;
// 判断统计遍历是否小于10
while (count < 10) {
//先产生一个随机数
int number = r.nextInt(20) + 1;
//判断该随机数在集合中是否存在。
if(!array.contains(number)){
//如果不存在:就添加,统计变量++。
array.add(number);
count++;
}
}
//遍历集合
for(Integer i : array){
System.out.println(i);
}
}
}
3:使用ArrayList集合存储自定义对象并遍历(三种方式去实现)
package homework; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class Work3 { public static void main(String[] args) { List list = new ArrayList(); list.add("杨晓洲"); list.add("郭子正"); list.add("齐旋"); //第一种使用迭代器 Iterator ListIterator l = list.listIterator(); while(l.hasNext()) { String s = (String)l.next(); System.out.println(s); } System.out.println("---------------------"); //第二种: toArray()方法 Object [] obj = list.toArray(); for(int i=0; i<obj.length; i++) { String s = (String)obj[i]; System.out.println(s); } System.out.println("--------------------"); //第三种 List集合中的get() size()方法 for(int i=0; i<list.size(); i++) { String s = (String)list.get(i); System.out.println(s); } } }