java lesson 17
1. 当向ArrayList添加一个对象时,实际上就是将该对象放置到了ArrayList底层所维护的数组当中;当向LinkedList中添加一个对象时,实际上LinkedList内部会生成一个Entry对象,该Entry对象的结构为:
Entry
{
Entry previous;
Object element;
Entry next;
}
其中的Object类型的元素element就是我们向LinkedList中所添加的元素,然后Entry又构造好了向前与向后的引用previous、next,最后将生成的这个Entry对象加入到了链表当中。换句话说,LinkedList中所维护的是一个个的Entry对象。
2. 关于Object类的equals方法的特点
a) 自反性:x.equals(x)应该返回true
b) 对称性:x.equals(y)为true,那么y.equals(x)也为true。
c) 传递性:x.equals(y)为 true并且y.equals(z)为true,那么x.equals(z)也应该为true。
d) 一致性:x.equals(y)的第一次调用为true,那么x.equals(y)的第二次、第三次、第n次调用也应该为true,前提条件是在比较之间没有修改x也没有修改y。
e) 对于非空引用x,x.equals(null)返回false。
3. 关于Object类的hashCode()方法的特点:
a) 在Java应用的一次执行过程当中,对于同一个对象的hashCode方法的多次调用,他们应该返回同样的值(前提是该对象的信息没有发生变化)。
b) 对于两个对象来说,如果使用equals方法比较返回true,那么这两个对象的hashCode值一定是相同的。
c) 对于两个对象来说,如果使用equals方法比较返回false,那么这两个对象的hashCode值不要求一定不同(可以相同,可以不同),但是如果不同则可以提高应用的性能。
d) 对于Object类来说,不同的Object对象的hashCode值是不同的(Object类的hashCode值表示的是对象的地址)。
4. 当使用HashSet时,hashCode()方法就会得到调用,判断已经存储在集合中的对象的hash code值是否与增加的对象的hash code值一致;如果不一致,直接加进去;如果一致,再进行equals方法的比较,equals方法如果返回true,表示对象已经加进去了,就不会再增加新的对象,否则加进去。
5. 如果我们重写equals方法,那么也要重写hashCode方法,反之亦然。
6. Map(映射):Map的keySet()方法会返回key的集合,因为Map的键是不能重复的,因此keySet()方法的返回类型是Set;而Map的值是可以重复的,因此values()方法的返回类型是Collection,可以容纳重复的元素。
7. 作业:参见Lesson 4的要求,使用集合实现,不允许使用数组。
8. 策略模式(Strategy Pattern)。通过查询资料掌握策略模式的原理。
9. 阅读TreeMap的帮助文档,自己写一个程序,练习TreeMap的使用方式并且自己定义一个Comparator。
1. 当向ArrayList添加一个对象时,实际上就是将该对象放置到了ArrayList底层所维护的数组当中;当向LinkedList中添加一个对象时,实际上LinkedList内部会生成一个Entry对象,该Entry对象的结构为:
Entry
{
Entry previous;
Object element;
Entry next;
}
其中的Object类型的元素element就是我们向LinkedList中所添加的元素,然后Entry又构造好了向前与向后的引用previous、next,最后将生成的这个Entry对象加入到了链表当中。换句话说,LinkedList中所维护的是一个个的Entry对象。
2. 关于Object类的equals方法的特点
a) 自反性:x.equals(x)应该返回true
b) 对称性:x.equals(y)为true,那么y.equals(x)也为true。
c) 传递性:x.equals(y)为 true并且y.equals(z)为true,那么x.equals(z)也应该为true。
d) 一致性:x.equals(y)的第一次调用为true,那么x.equals(y)的第二次、第三次、第n次调用也应该为true,前提条件是在比较之间没有修改x也没有修改y。
e) 对于非空引用x,x.equals(null)返回false。
3. 关于Object类的hashCode()方法的特点:
a) 在Java应用的一次执行过程当中,对于同一个对象的hashCode方法的多次调用,他们应该返回同样的值(前提是该对象的信息没有发生变化)。
b) 对于两个对象来说,如果使用equals方法比较返回true,那么这两个对象的hashCode值一定是相同的。
c) 对于两个对象来说,如果使用equals方法比较返回false,那么这两个对象的hashCode值不要求一定不同(可以相同,可以不同),但是如果不同则可以提高应用的性能。
d) 对于Object类来说,不同的Object对象的hashCode值是不同的(Object类的hashCode值表示的是对象的地址)。
4. 当使用HashSet时,hashCode()方法就会得到调用,判断已经存储在集合中的对象的hash code值是否与增加的对象的hash code值一致;如果不一致,直接加进去;如果一致,再进行equals方法的比较,equals方法如果返回true,表示对象已经加进去了,就不会再增加新的对象,否则加进去。
5. 如果我们重写equals方法,那么也要重写hashCode方法,反之亦然。
6. Map(映射):Map的keySet()方法会返回key的集合,因为Map的键是不能重复的,因此keySet()方法的返回类型是Set;而Map的值是可以重复的,因此values()方法的返回类型是Collection,可以容纳重复的元素。
7. 作业:参见Lesson 4的要求,使用集合实现,不允许使用数组。
8. 策略模式(Strategy Pattern)。通过查询资料掌握策略模式的原理。
9. 阅读TreeMap的帮助文档,自己写一个程序,练习TreeMap的使用方式并且自己定义一个Comparator。
发表评论
-
已前的学习笔记java lesson 20
2012-01-03 13:26 847java lesson 20 1. 要想使用反射,首先需要获得 ... -
已前的学习笔记java lesson 19
2012-01-03 13:25 710java lesson 19 1. 当遍历集合或数组时,如果需 ... -
已前的学习笔记java lesson 18
2012-01-03 13:23 792java lesson 18 1. 有这样一个类: // ge ... -
已前的学习笔记java lesson 16
2012-01-02 15:54 805java lesson 16 1. 对于Java中 ... -
已前的学习笔记java lesson 15
2012-01-02 15:52 865java lesson 15 1. 包装类( ... -
已前的学习笔记java lesson 14
2012-01-02 15:49 844java lesson 14 1. 接口中所 ... -
已前的学习笔记java lesson 13
2012-01-02 15:45 634java lesson 13 Java SE Lesson 2 ... -
已前的学习笔记java lesson 12
2012-01-02 15:43 695JAVA lesson 12 1. 类是一种 ... -
已前的学习笔记java lesson 11
2012-01-01 12:51 721Java lesson 11 1. 如果一个类包含了属性与方法 ... -
已前的学习笔记java lesson 11
2011-12-31 15:02 0Java lesson 11 1. 如果一个类包含了属性与方法 ... -
已前的学习笔记java lesson 10
2011-12-31 14:42 728Java lesson 10 1. 类中的属性又叫做成员变量( ... -
已前的学习笔记java lesson 9
2011-12-31 14:17 688Java lesson 9 1. 面向对象 ... -
已前的学习笔记java lesson 8
2011-12-31 14:00 780Java lesson 8 1. break语句:经常用在循环 ... -
已前的学习笔记java lesson 7
2011-12-31 12:00 689Java lesson 7 1. Java中的循环控制语句一共 ... -
已前的学习笔记java lesson 6
2011-12-31 11:31 788Java lesson 6 1. 条件运算符(三元表达式),其 ... -
已前的学习笔记java lesson 5
2011-12-30 22:29 707Java lesson 5 运算符 关系运算符 1.大于(&g ... -
已前的学习笔记java lesson 4
2011-12-30 21:33 725Java lesson 4 运算符(operator) pub ... -
已前的学习笔记java lesson 3
2011-12-30 21:02 606Java lesson 3 Pitfall of primit ... -
已前的学习笔记java lesson 2
2011-12-30 20:02 667Java lesson 2 Primitive date ty ... -
已前的学习笔记java lesson 1
2011-12-30 18:15 636Lesson 1 Java se java standard ...
相关推荐
java技术从入门到精通(孙鑫)学习笔记-Lesson2
java技术从入门到精通(孙鑫)学习笔记Lesson4
【Java学习笔记】是针对Java编程语言的一份详尽的学习资料,主要由“圣思源”提供,旨在帮助初学者和进阶者深入理解和掌握Java技术。这份笔记可能包含了从基础语法到高级特性的全面讲解,结合了理论与实践,通过实例...
"java技术从入门到精通(孙鑫)学习笔记Lesson1"涵盖了Java的基础知识,包括JDK、JRE、J2SE、J2EE和J2ME等核心概念。 JDK,全称为Java Develop Kit,是Java开发工具包,包含了编译器、调试器和各种工具,用于编写、...
java技术从入门到精通(孙鑫)学习笔记Lesson3(接口)
java技术从入门到精通(孙鑫)学习笔记Lesson10(网络编程)
Java 多线程是编程中的重要概念,尤其在并发处理和高效系统设计中扮演着关键角色。本节主要探讨了Java中的线程概念以及如何创建...通过不断的实践和学习,可以更好地利用Java的多线程特性来提升软件的性能和用户体验。
【Java技术从入门到精通——Lesson3学习笔记】 在Java编程语言中,包(package)是一种组织类的方式,它的引入主要是为了管理和解决大型项目中大量类的命名冲突问题。包在Java中扮演着类似文件系统目录的角色,允许...
本篇笔记主要关注的是继承这一概念。 继承允许我们创建一个新类,这个新类可以从现有的类(父类或超类)中继承属性和行为。这样做的好处是可以减少代码重复,提高代码的复用性,并且使得类之间的关系更加清晰。在...
面向对象编程是Java技术的核心,它是以对象为...理解这些概念是深入学习Java技术的基础,也是成为一名精通Java的程序员所必需的。通过实践和不断学习,你可以更好地掌握面向对象编程的精髓,提高编程效率和代码质量。
本篇笔记主要讨论了几个关键的数据结构,包括LinkedList、ArrayList以及HashSet,并通过实例展示了它们的用法。 首先,LinkedList是一个实现了List接口的类,它采用双向循环链表实现。这意味着每个节点包含一个数据...
【压缩包子文件的文件名称列表】:由于只给出了“two lesson”这一条信息,我们可以假设压缩包内包含了一系列与Java编程第二课相关的文件,可能有PPT课件、代码示例、笔记文档、练习题等,用于帮助学习者理解并掌握...
通过学习这个“圣思园Java.web笔记”,开发者可以系统地掌握Java Web开发的基本技能,为构建动态、交互性强的Web应用程序打下坚实的基础。无论是初学者还是有经验的开发者,都能从中受益,提升自己的技术水平。
【压缩包子文件的文件名称列表】:只给出“seventeen lesson”,这可能是压缩包内的主目录名,暗示压缩包内部可能包含一系列与第17课相关的子文件和子目录,如.java源代码文件、.html文档、图片、笔记、测试案例等,...
《Java学习》是一个全面深入的Java编程学习资源,包含了丰富的笔记和配套代码,旨在帮助学习者更好地理解和掌握Java编程语言。这个压缩包文件是学习Java过程中的重要参考资料,它包括了多个子目录,每个子目录代表了...
【标题】:“小贝程序员生活\课件\java\javaclass\thirteen lesson.rar” 提供的是一份关于Java编程的课程资料,其中包含了第十三课的内容。这个压缩包很可能是针对初学者或者有一定基础的Java开发者设计的,旨在...
描述中同样提到“小贝程序员生活\课件\java\javaclass\one lesson.rar”,这暗示了这个压缩包的内容与Java编程语言的“javaclass”部分相关,可能包含课件、笔记、代码示例或教学视频等学习资源。"javaclass"通常指...
描述中提到的路径结构暗示这是一个关于Java类和对象的学习资料,可能包括PPT、笔记、代码示例等。"小贝程序员生活"可能是讲师或课程系列的名字,而"\java\javaclass"表明内容专注于Java语言的基础和高级特性,特别是...
【压缩包子文件的文件名称列表】:仅给出“nine lesson”,这可能是压缩包内的主目录或者文件夹名,里面可能包含了该课程的PPT、代码示例、笔记文档、视频教程等各类学习资源,帮助学习者理解和实践Java类的使用。...