a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 145|回复: 0

[基础知识] JAVA面向对象编程课堂笔记22

[复制链接]
发表于 2012-8-4 12:37:27 | 显示全部楼层 |阅读模式
SortedSet可自动为元素排序。
0 O! F+ Z) N8 L9 pSortedSet的实现类是TreeSet:它的作用是字为添加到TreeSet中的元素排序。
$ O4 }1 U% K  K* G4 \3 n  9 a& n$ Y9 D; B$ G9 P. ?7 o
练习:自定义类用TreeSet排序。
+ ^5 N; L5 |4 A$ H$ `与HashSet不同,TreeSet并不需要实现HashCode()和equals()。 - Q5 l5 m& z5 o6 J# p
只要实现compareable和compareTo()接可以实现过滤功能。 , Y4 i: y3 ]# U6 I5 p4 ]" D
(注:HashSet不调用CompareTo())。 ( C+ ?) h1 r, b: n/ W" K$ E
  
# G% q5 g( {8 o- _4 k0 `如果要查询集合中的数据,使用Set必须全部遍历,所以查询的效率低。使用Map,可通过查找key得到value,查询效率高。 $ V  k2 U% e4 E/ A
集合中常用的是:ArrayList,HashSet,HashMap。其中ArrayList和HashMap使用最为广泛。
- a! C* b1 t  P7 x- A2 Q+ L  
) T9 m0 X6 E  f+ I# x" Z, ?# w% ]使用HashMap,put()表示放置元素,get()表示取元素。 9 Y0 K& k# n( l
  % T& r6 k6 {; Z/ p% t
遍历Map,使用keySet()可以返回set值,用keySet()得到key值,使用迭代器遍历,然后使用put()得到value值。 3 x' @/ k0 e3 @0 r
上面这个算法的关键语句: , ]; L3 P6 c+ W* _+ m4 t
Set s=m.keySet(); & a# \2 l! n* d0 x1 h$ Q4 u1 A7 R! d$ M
Interator it=new interator();
3 k9 _+ s8 Z, CObject key=it.next();
) t$ A1 S$ D+ UObject value=m.get(key); 1 S. n- I2 Q5 j( a
  
. i8 S7 Y: |" Q注意:HashMap与HashCode有关,用Sort对象排序。 0 \* V/ w8 f. v2 p' p" D5 i
如果在HashMap中有key值重复,那么后面一条记录的value覆盖前面一条记录。
; ]7 M. i) b0 H$ M  
4 Y1 R4 K" M5 [1 Q: K9 rKey值既然可以作为对象,那么也可以用一个自定义的类。比如: 2 {. C8 Z( [5 _  ]4 Q4 i2 U# G
m.put(new sutdent(“Liucy”,30),”boss”) ! ], n6 r* L. C2 Q( K$ u+ f' U
如果没有语句来判定Student类对象是否相同,则会全部打印出来。
! A" _9 T4 Y8 y$ h  
! i* B# ?% w5 _; I: I4 j当我们用自定义的类对象作为key时,我们必须在程序中覆盖HashCode()和equals()。 2 ]. }* d. m* }: N2 H. N/ E
  
1 h* l0 v- K% o注:HashMap底层也是用数组,HashSet底层实际上也是HashMap,HashSet类中有HashMap属性(我们如何在API中查属性)。HashSet实际上为(key.null)类型的HashMap。有key值而没有value值。
$ `: Q3 P$ z4 ^" P3 Z2 `; |  + {5 b* T1 `, K
正因为以上的原因,TreeSet和TreeMap的实现也有些类似的关系。
  N' x2 M5 U/ `注意:TreeSet和TreeMap非常的消耗时间,因此很少使用。
$ Q9 N( w' c3 ~. M+ G+ }我们应该熟悉各种实现类的选择——非常体现你的功底。
7 H' {7 Q: a4 R3 e* C  l: V( a: K+ ~  ) C" _8 o4 v  ~5 k' h+ I
HashSet VS TreeSet:HashSet非常的消耗空间,TreeSet因为有排序功能,因此资源消耗非常的高,我们应该尽量少使用,而且最好不要重复使用。 6 v$ w) J7 L9 @6 y9 P) J. u
基于以上原因,我们尽可能的运用HashSet而不用TreeSet,除非必须排序。   ^* b0 L7 g& X$ X1 J" x6 o
同理:HashMap  VS  TreeMap:一般使用HashMap,排序的时候使用TreeMap。 ; ^. W# u) _! q% q2 Z% j& {
HashMap VS Hashtable(注意在这里table的第一个字母小写)之间的区别有些类似于ArrayList和Vector,Hashtable是重量级的组件,在考虑并发的情况,对安全性要求比较高的时候使用。 3 a/ K% i5 Y+ @- l- N: k
  , Q9 x: R8 V) e
Map的运用非常的多。   S+ x6 n7 K) k) O; h) Y! t
    m9 Z8 C# u6 ?* z
使用HashMap(),如果使用自定义类,一定要覆盖HashCode()和equals()。
6 s, a# ~: z" t9 h' X    {7 x  l) Q0 l  c; O3 I! P
重点掌握集合的四种操作:增加、删除、遍历、排序。 5 o* U5 m4 j2 N8 t- d0 q
    A9 `4 u& w4 `9 _( ^
Module8—12利用两天的时间完成。 6 t  ]6 R; q7 A2 H7 U- s
Module8:图形界面
$ N0 m: s3 }; k/ b, ZModule9:事件模型(在本部分最重要) # b0 h9 r" G! a  W; W
Module10:AWT
* @% K8 O/ @! v5 ?5 k2 FModule11:Swing
4 ]/ c* c# K# ]* t5 {Module12:Applet(这个技术基本已经被淘汰)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-8 03:33 , Processed in 0.196270 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表