集合(从本部分开始涉及API)
W$ x9 k4 S) K; q1 O集合是指一个对象容纳了多个对象,这个集合对象主要用来管理维护一系列相似的对象。
5 Q/ b/ H9 S7 Y( \数组就是一种对象。(练习:如何编写一个数组程序,并进行遍历。) ; o0 p) ^1 M7 [9 W0 L, A/ v2 [5 U
java.util.*定义了一系列的接口和类,告诉我们用什么类NEW出一个对象,可以进行超越数组的操作。 ) z+ G$ c3 C3 }, g* q) j+ U' E7 S
(注:JAVA1.5对JAVA1.4的最大改进就是增加了对范型的支持)
* f- E! g4 V. d$ K" B集合框架接口的分类:(分collection接口 和 map接口)
5 h$ f7 Q% N* |( Q% k# W& y" X; q
f7 o; X% o7 \0 U4 w0 ^ Collection接口 Map接口
8 Z0 d, g: q: R& p' `4 \# o3 E
' }: X7 T+ g- W9 M* }
9 v5 d+ B( i( F! _$ i/ o6 V( T# V7 h; X8 R! t
List接口 Set接口 SortedMap接口
/ K, H# _- ]$ o" |8 T" |/ e4 W 0 v, e, n; |5 N+ ~& v& X- R
! _0 e: R/ M" ^: c+ X! j8 `: n! D7 o' O: Y
SortedSet接口
! Q8 K( n. }# }" Q$ R) h. tJAVA中所有与集合有关的实现类都是这六个接口的实现类。
+ s* t; B/ ^" a5 D + q# D) \, S, c
Collection接口:集合中每一个元素为一个对象,这个接口将这些对象组织在一起,形成一维结构。
6 o( {- I6 ?3 D4 c
$ P! q0 ]) |- q% mList接口代表按照元素一定的相关顺序来组织(在这个序列中顺序是主要的),List接口中数据可重复。
5 Q6 v4 s+ m5 g# G " ~" _5 {3 A; o& n! u9 t
Set接口是数学中集合的概念:其元素无序,且不可重复。(正好与List对应)
, r+ r6 \! C; _' O; W
E0 S r! D( I. ?- e; y4 Y9 j6 DSortedSet会按照数字将元素排列,为“可排序集合”。 2 L! J! b9 j' b' @" s
5 y8 b; T% y7 w% r9 \# ]/ N+ J7 r& XMap接口中每一个元素不是一个对象,而是一个键对象和值对象组成的键值对(Key-Value)。 Q w1 O7 Y# J' f
Key-Value是用一个不可重复的key集合对应可重复的value集合。(典型的例子是字典:通过页码的key值找字的value值)。 6 m3 @& P0 R9 \! ~1 V
例子: # ~6 c- ^2 M4 V
key1—value1; - t {7 k0 Y2 s/ a/ z3 J
key2—value2;
# {7 _% ~# K! S! ]! \. fkey3—value3.
, q, X/ E$ s8 ], e8 b5 A" ?0 b7 q# P; F3 xSortedMap:如果一个Map可以根据key值排序,则称其为SortedMap。(如字典)
- [7 z2 G; j7 o- I# ?!!注意数组和集合的区别:数组中只能存简单数据类型。Collection接口和Map接口只能存对象。
, B0 m0 A/ c/ ?3 @
2 }# l* Q! ^. B/ |以下介绍接口: 3 o. e% G: N/ Q7 C/ U% w) q& P
List接口:(介绍其下的两个实现类:ArrayList和LinkedList)
0 J% ~6 y9 {3 t! @# L, r: lArrayList和数组非常类似,其底层①也用数组组织数据,ArrayList是动态可变数组。
" e% t( C4 E4 C# v, O0 \' }8 s① 底层:指存储格式。说明ArrayList对象都是存在于数组中。
; M/ z$ F o: f% G9 d注:数组和集合都是从下标0开始。 8 z8 ?9 h8 E. B1 M! ?3 A5 L
ArrayList有一个add(Object o)方法用于插入数组。 8 P+ `, ~" ]' t6 k5 h
ArrayList的使用:(完成这个程序) * g$ ^; @3 C* @9 G$ n* o9 A# ?6 {
先import java.util.*; 4 a) j1 C( K+ L, U* N2 h. @1 e/ Q
用ArrayList在一个数组中添加数据,并遍历。
4 e8 @/ S6 J3 R' D2 VArrayList中数组的顺序与添加顺序一致。
2 e! w' }0 B; U ~" s5 O只有List可用get和size。而Set则不可用(因其无序)。
7 C, m# F J) _; e9 fCollection接口都是通过Iterator()(即迭代器)来对Set和List遍历。
3 }& h4 {' M, X通过语句:Iterator it=c.iterator(); 得到一个迭代器,将集合中所有元素顺序排列。然后可以通过interator方法进行遍历,迭代器有一个游标(指针)指向首位置。
! e( D6 C/ _; f l' UInterator有hasNext(),用于判断元素右边是否还有数据,返回True说明有。然后就可以调用next动作。Next()会将游标移到下一个元素,并把它所跨过的元素返回。(这样就可以对元素进行遍历) |