马士兵视频学习第三天总结
2013-03-10 23:14
253 查看
1. 容器的基础
上图为容器API的类图,两个父类接口Collection和Map,Collection有其子类接口set,list,每一个具体类中都要实现相应接口中的方法。
2. 在容器中添加和删除元素
在容器的使用过程中,比如:新建了一个Collection接口的引用,指向了一个HashSet容器Collection c = new HashSet();向其中add了字符串常量"Hello"以及Integer的对
象c.add("Hello");c.add(new Integer(100));(add的只能为一个对象不能为一个基本类型的元素,因为基本类型元素时分配在栈中的可能随时发生更改),然后调用
了c.remove("Hello");以及c.remove(new Integer(100));那么c容器中的"Hello"和Integer对象是会被删除的,因为在调用remove方法时实际响应的是此对象的equals方法,
即当remove的对象和容器中现有的对象equals的时候就会被删除,String和Integer都重写了equals方法(值相等即为相等),所以调用remove方法会删除c中对应的对象,
但是如果是自己新建的类的对象,比如:Name类的对象c.add(new Name("Mike", "Zeko"));c.remove(new Name("Mike", "Zeko"));,如果在Name类中没有重写equals
方法的话最终Name("Mike", "Zeko")将不会被删除,因为没有重新equals方法默认使用的是Object类的equals方法,比较的是他们的引用是否相等,自然不会被删除。
3. Iterator的使用
Iterator是一个接口,其作用是遍历整个Collection,在Collection接口中有一个iterator()方法,此方法返回一个iterator类型的引用,也就是说我在使用任何Collection的子类
定义的对象时都可以调用iterator()方法返回一个iterator类型的引用,通过一个iterator对象可以对Collection中的元素进行访问,如:
Collection c = new HashSet();
c.add(new Name(··, ··));
c.add(···);
····
for(Iterator i = c.iterator; i.hasNext; ) {
Name name = (Name)i.next();
if(name.getFirstName.length() < 3)
i.remove();
}
其中的i.remove();不能使用c.remove(name);因为在使用Iterator的时候对c进行了封锁,在使用过程中只能通过Iterator的对象来访问不能通过其他的方式访问修改(线程的知识)
4. Map中的Auto-Boxing和Unboxing
使用Map时传递两个值,一个是key一个是value,使用put方法向Map的对象中赋值,如果两次赋值的key值都是相同的,那么后一次赋值将取代之前此key中的value值。
Map初始化时要求传递的是两个对象,但是如果传递了一个基础类型的数据,如:map.put("one", 1);那么后面的基础类型数值1将会被自动打包成Integer类型的对象。
而在取出map中的元素value时取出的将是一个Object类型的值,将其强制转换为Integer类型的值并赋值给一个int类型的值的时候会自动解包,如:
int i = (Integer)map1.get("three");
自动打包解包不仅在此处应用,在JDK1.5之后只要把一个基础类型的元素赋值给其相应的包装类的对象就会自动打包,把一个基础类型包装类对象赋值给对应的基础类型变量
就会自动解包,例如:
int k = new Integer(4);
System.out.println(k);
Integer l = 2;
System.out.println(l);
5. 关于OutputStream和Write中的write方法
在使用FileOutputStream对象或BufferedWriter的对象调用write()方法的时候,调用此方法时并没有直接把相应的数据写到文件中,而是在关闭文件的时候才把所有信息一起
写到输出文件中,这个是什么原因?感觉应该是有缓冲区的原因吧?今天还没有解决,有待继续学习解决···
上图为容器API的类图,两个父类接口Collection和Map,Collection有其子类接口set,list,每一个具体类中都要实现相应接口中的方法。
2. 在容器中添加和删除元素
在容器的使用过程中,比如:新建了一个Collection接口的引用,指向了一个HashSet容器Collection c = new HashSet();向其中add了字符串常量"Hello"以及Integer的对
象c.add("Hello");c.add(new Integer(100));(add的只能为一个对象不能为一个基本类型的元素,因为基本类型元素时分配在栈中的可能随时发生更改),然后调用
了c.remove("Hello");以及c.remove(new Integer(100));那么c容器中的"Hello"和Integer对象是会被删除的,因为在调用remove方法时实际响应的是此对象的equals方法,
即当remove的对象和容器中现有的对象equals的时候就会被删除,String和Integer都重写了equals方法(值相等即为相等),所以调用remove方法会删除c中对应的对象,
但是如果是自己新建的类的对象,比如:Name类的对象c.add(new Name("Mike", "Zeko"));c.remove(new Name("Mike", "Zeko"));,如果在Name类中没有重写equals
方法的话最终Name("Mike", "Zeko")将不会被删除,因为没有重新equals方法默认使用的是Object类的equals方法,比较的是他们的引用是否相等,自然不会被删除。
3. Iterator的使用
Iterator是一个接口,其作用是遍历整个Collection,在Collection接口中有一个iterator()方法,此方法返回一个iterator类型的引用,也就是说我在使用任何Collection的子类
定义的对象时都可以调用iterator()方法返回一个iterator类型的引用,通过一个iterator对象可以对Collection中的元素进行访问,如:
Collection c = new HashSet();
c.add(new Name(··, ··));
c.add(···);
····
for(Iterator i = c.iterator; i.hasNext; ) {
Name name = (Name)i.next();
if(name.getFirstName.length() < 3)
i.remove();
}
其中的i.remove();不能使用c.remove(name);因为在使用Iterator的时候对c进行了封锁,在使用过程中只能通过Iterator的对象来访问不能通过其他的方式访问修改(线程的知识)
4. Map中的Auto-Boxing和Unboxing
使用Map时传递两个值,一个是key一个是value,使用put方法向Map的对象中赋值,如果两次赋值的key值都是相同的,那么后一次赋值将取代之前此key中的value值。
Map初始化时要求传递的是两个对象,但是如果传递了一个基础类型的数据,如:map.put("one", 1);那么后面的基础类型数值1将会被自动打包成Integer类型的对象。
而在取出map中的元素value时取出的将是一个Object类型的值,将其强制转换为Integer类型的值并赋值给一个int类型的值的时候会自动解包,如:
int i = (Integer)map1.get("three");
自动打包解包不仅在此处应用,在JDK1.5之后只要把一个基础类型的元素赋值给其相应的包装类的对象就会自动打包,把一个基础类型包装类对象赋值给对应的基础类型变量
就会自动解包,例如:
int k = new Integer(4);
System.out.println(k);
Integer l = 2;
System.out.println(l);
5. 关于OutputStream和Write中的write方法
在使用FileOutputStream对象或BufferedWriter的对象调用write()方法的时候,调用此方法时并没有直接把相应的数据写到文件中,而是在关闭文件的时候才把所有信息一起
写到输出文件中,这个是什么原因?感觉应该是有缓冲区的原因吧?今天还没有解决,有待继续学习解决···
相关文章推荐
- 如何自学之马士兵视频学习总结?
- 马士兵视频学习第二天总结
- 马士兵视频学习第四天总结
- Dom第三天学习总结
- 记 Linux 学习知识总结 -- 寒江老师视频(三) 文件
- 马士兵struts2视频教程第三十三集 (25到32集result的总结)
- Play线上训练营: 中国开发者必知政策课程总结 (视频和学习资料)
- 前段时间的学习总结(视频截图笔记加归类总结知识点)
- 程序猿之路-----学习MJ视频总结1---UIImageView和UIButton的区别 、iOS懒加载
- 黑 马 程 序 员_视频学习总结<C语言>----03 指针
- 从一个程序看继承的有关细节及规则(学习马士兵视频的总结)
- cs193p斯坦福视频学习总结——iOS基础知识
- 记 Linux 学习知识总结 -- 寒江老师视频(六) - 文件的统计与文件的压缩
- 马士兵java视频学习笔记第一章:Hello,World!
- 【学习摘记】马士兵JDBC技术_复习总结_最重要的四段代码
- camer学习之vivi模拟视频驱动学习总结
- 马士兵视频学习复习归纳(一)
- 老男孩视频学习知识点总结之系统优化初步讲解
- 黑马程序员——位运算第三天学习笔记,总结
- static this(尚学堂视频学习总结_002)