首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

技术丶交流 java对象数组的概述和使用(3)

技术丶交流 java对象数组的概述和使用(3)

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错误
继承事业,薪火相传
返回列表