Java:如何封装集合

简介:
对于一般的成员变量,对其提供简单的 getter/setter 封装即可。而对于一个集合类,不能够这样做。
对于一个简单的成员变量,可以这样:
class  Athlete {

     private  String  name ;

 

     public  String getName() {

        return   name ;

    }

 

     public   void  setName(String name) {

        this . name  = name;

    }

     // ......

}
而如果是一个 Set/List/Map 或数组,应该:
[1] 初始化这个集合类;
[2] 提供对单个元素的 add/remove
[3] 提供加入另一个集合的方法。如果是基于此初始化,则先保证当前集合无元素;
[4] 对于 getter 方法,应该返回该集合的只读试图;
[5] 提供当前集合 size
 
public   class  Game {

     private  Set<Athlete>  players  =  new  HashSet<Athlete>(); // 1

 

     public   void  addPlayer(Athlete one) { // 2

        players .add(one);

    }

 

     public   void  removePlayer(Athlete one) { // 2

        players .remove(one);

    }

 

     public   void  addPlayers(Set<Athlete> set) { // 3

       Iterator<Athlete> iter = set.iterator();

        while  (iter.hasNext())

           addPlayer(iter.next());

    }

 

     public   void  initializaPlayers(Set<Athlete> set) { // 3

        if  (getAttendNumbers() > 0)

            players .clear();

        players .addAll(set);

    }

 

     public  Set<Athlete> getAllPlayers() { // 4

        return  Collections.unmodifiableSet( players );

    }

 

     public   int  getAttendNumbers() { // 5

        return   players .size();

    }

}
 本文转自zhangjunhd51CTO博客,原文链接:http://blog.51cto.com/zhangjunhd/71263,如需转载请自行联系原作者
相关文章
|
6天前
|
SQL Java API
使用Java Stream API简化集合操作
使用Java Stream API简化集合操作
|
5天前
|
存储 Java 索引
Java基础之集合
“【7月更文挑战第7天】”Java集合框架用于存放对象,包括List(如ArrayList、LinkedList、Vector)、Set(如HashSet、LinkedHashSet、TreeSet)和Queue(如PriorityQueue、ArrayDeque)。集合存放对象引用,基本类型自动转换为包装类。Collection是最基础接口,其子接口List、Set和Queue定义不同集合行为。Java提供抽象类和实现类简化开发,例如AbstractList、ArrayList、LinkedList等。集合通过Iterator遍历,也可用增强for循环。
34 11
|
4天前
|
存储 安全 Java
Java基础之集合Map
【7月更文挑战第8天】Java中的Map集合以键值对方式存储数据,如`Map&lt;&quot;name&quot;, &quot;张三&quot;&gt;`。Map接口定义了存取、判断、移除等操作,包括`put`、`get`、`containsKey`等方法。HashMap是最常用的实现,基于哈希表,允许null键值,但不保证顺序。其他实现包括同步的Hashtable、处理属性文件的Properties、保持插入顺序的LinkedHashMap、基于红黑树的TreeMap、弱引用的WeakHashMap、并发安全的ConcurrentHashMap和针对枚举优化的EnumMap。
11 4
|
4天前
|
安全 算法 Java
Java面试题:如何使用并发集合,例如ConcurrentHashMap?
Java面试题:如何使用并发集合,例如ConcurrentHashMap?
14 1
|
4天前
|
设计模式 缓存 安全
Java面试题:工厂模式与内存泄漏防范?线程安全与volatile关键字的适用性?并发集合与线程池管理问题
Java面试题:工厂模式与内存泄漏防范?线程安全与volatile关键字的适用性?并发集合与线程池管理问题
9 1
|
7天前
|
Java API
如何利用Java Stream API简化集合操作?
如何利用Java Stream API简化集合操作?
|
4天前
|
存储 安全 Java
Java面试题:请解释Java中的泛型集合框架?以及泛型的经典应用案例
Java面试题:请解释Java中的泛型集合框架?以及泛型的经典应用案例
10 0
|
4天前
|
安全 Java 开发者
Java多线程:Java中如何创建线程安全的集合,编程中如何优化Java多线程集合
Java多线程:Java中如何创建线程安全的集合,编程中如何优化Java多线程集合
14 0
|
5天前
|
存储 安全 Java
Java Map集合:选择正确的实现方式
Java Map集合:选择正确的实现方式
|
6天前
|
Java API
如何利用Java Stream API简化集合操作?
如何利用Java Stream API简化集合操作?