- UID
- 1029342
- 性别
- 男
|
15.07 Collection集合的高级功能测试
成员方法:
1. boolean addAll(Collection<? extends E> c):
将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。
2. boolean removeAll(Collection<?> c):
移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。
3. boolean containsAll(Collection<?> c):
如果此 collection 包含指定 collection 中的所有元素,则返回 true。
4. boolean retainAll(Collection<?> c):
仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。换句话说,移除此 collection 中未包含在指定 collection 中的所有元素。
例:
c1.addAll(c2);//将c2集合中的所有元素添加到c1集合中,c1变c2不变
c1.removeAll(c2);//将c1集合中与c2集合相同的所有元素删除,只要有一个相同的就返回true
c1.containsAll(c2);//判断c1集合中的元素是否包含c2中的全部元素,全部包含则返回true
c1.retainAll(c2);//将c1集合中与c2集合相同的元素保留,删除其他元素,返回值表示c1集合是否发生变化,发生变化返回true,没有变化返回false
15.08 集合的遍历之集合转数组遍历
Object[] toArray():返回包含此 collection 中所有元素的数组。
例:
1 public class Practice
2 {
3 public static void main(String[] args)
4 {
5 // 创建集合
6 Collection c = new ArrayList();
7 c.add("hello");
8 c.add("world");
9 c.add("java");
10
11 Object[] objs = c.toArray();
12 for (int i = 0; i < objs.length; i++)
13 {
14 //向下转为String类型
15 String s = (String)objs[i];
16 System.out.println(s+":"+s.length());
17 }
18 }
19 }
运行结果:
hello:5
world:5
java:4
15.09 Collection存储自定义对象并遍历案例(使用数组)
例:
1 public class Practice
2 {
3 public static void main(String[] args)
4 {
5 // 创建集合
6 Collection c = new ArrayList();
7 //创建学生对象并添加到集合
8 c.add(new Student("小明",23));
9 c.add(new Student("小红",32));
10 c.add(new Student("小强",14));
11 c.add(new Student("旺财",8));
12 c.add(new Student("张三",16));
13
14 Object[] objs = c.toArray();
15 for (int i = 0; i < objs.length; i++)
16 {
17 Student s = (Student)objs[i];
18 System.out.println(s.getName()+":"+s.getAge());
19 }
20 }
21 }
运行结果:
小明:23
小红:32
小强:14
旺财:8
张三:16
15.10 集合的遍历之迭代器遍历
Iterator<E> iterator():返回在此 collection 的元素上进行迭代的迭代器。
例:
1 // 创建集合
2 Collection c = new ArrayList();
3 //创建元素并添加到集合
4 c.add("hello");
5 c.add("world");
6 c.add("java");
7 //获取迭代器,实际返回的是子类对象,多态
8 Iterator it = c.iterator();
9 while(it.hasNext())
10 {
11 System.out.println(it.next());
12 }
15.11 Collection存储自定义对象并遍历案例(使用迭代器)
1 public class Practice
2 {
3 public static void main(String[] args)
4 {
5 // 创建集合
6 Collection c = new ArrayList();
7 //创建学生对象并添加到集合
8 c.add(new Student("小明",23));
9 c.add(new Student("小红",32));
10 c.add(new Student("小强",14));
11 c.add(new Student("旺财",8));
12 c.add(new Student("张三",16));
13
14 Iterator it = c.iterator();
15 while(it.hasNext())
16 {
17 Student s = (Student)it.next();
18 System.out.println(s.getName()+":"+s.getAge());
19 }
20 }
21 }
15.12 迭代器使用的问题探讨
1.使用迭代器获取元素的两种方式:
方式1:
Iterator it = c.iterator();
while(it.hasNext())
{
Student s = (Student)it.next();
System.out.println(s.getName()+":"+s.getAge());
}
方式2:
for(Iterator it = c.iterator();it.hasNext();)
{
Student s = (Student)it.next();
System.out.println(s.getName()+":"+s.getAge());
}
使用方式2的好处:it在for循环结束后就变成垃圾,效率较高
2.不要多次使用it.next()方法
例:
Iterator it = c.iterator();
while(it.hasNext())
{
System.out.println(((Student)it.next()).getName());
System.out.println(((Student)it.next()).getAge());
}
上面的代码表示获取的是第1个学生的姓名,第2个学生的年龄,以此类推,如果集合中的元素是奇数个,则会报NoSuchElementException错误 |
|