天天看點

Java:如何封裝集合

對于一般的成員變量,對其提供簡單的getter/setter封裝即可。而對于一個集合類,不能夠這樣做。

對于一個簡單的成員變量,可以這樣:

<b>class</b> Athlete {

    <b>private</b> String name;

    <b>public</b> String getName() {

       <b>return</b> name;

    }

    <b>public</b> <b>void</b> setName(String name) {

       <b>this</b>.name = name;

    // ......

}

而如果是一個Set/List/Map或數組,應該:

[1]初始化這個集合類;

[2]提供對單個元素的add/remove;

[3]提供加入另一個集合的方法。如果是基于此初始化,則先保證目前集合無元素;

[4]對于getter方法,應該傳回該集合的隻讀試圖;

[5]提供目前集合size。

<b>public</b> <b>class</b> Game {

    <b>private</b> Set&lt;Athlete&gt; players = <b>new</b> HashSet&lt;Athlete&gt;();// 1

    <b>public</b> <b>void</b> addPlayer(Athlete one) {// 2

       players.add(one);

    <b>public</b> <b>void</b> removePlayer(Athlete one) {// 2

       players.remove(one);

    <b>public</b> <b>void</b> addPlayers(Set&lt;Athlete&gt; set) {// 3

       Iterator&lt;Athlete&gt; iter = set.iterator();

       <b>while</b> (iter.hasNext())

           addPlayer(iter.next());

    <b>public</b> <b>void</b> initializaPlayers(Set&lt;Athlete&gt; set) {// 3

       <b>if</b> (getAttendNumbers() &gt; 0)

           players.clear();

       players.addAll(set);

    <b>public</b> Set&lt;Athlete&gt; getAllPlayers() {// 4

       <b>return</b> Collections.unmodifiableSet(players);

    <b>public</b> <b>int</b> getAttendNumbers() {// 5

       <b>return</b> players.size();

 本文轉自zhangjunhd51CTO部落格,原文連結:http://blog.51cto.com/zhangjunhd/71263,如需轉載請自行聯系原作者