java自定义集合类

来源:互联网 发布:人工智能方面的杂志 编辑:程序博客网 时间:2024/05/29 19:25

最近在写一些简单的小程序,开始大量使用集合 类里要用的集合比较多的时候的声明感觉很麻烦(实际上如果有自定义类有放入集合的需求时自定义集合最方便( ̄▽ ̄)/),就准备自己定义集合类拿来用。
比如 常规的特定对象集合是这样的:

    List<Cat> cats = new List<Cat>();    cats.Add(cat);

很简单是不是, 但是如果需要创建好几个这样的集合,< Cat>看起来就比较烦。更重要的是 ,根据对象A的特点和用户需求,我们会希望对应的集合能执行一些特殊操作(查重,排序,默认值神马的)。这时候就可以考虑对集合再进行一层封装

public class Cats{        /// 封装需要的集合        List<Cat> cats = new List<Cat>();        ///来定义我们需要的方法        public void add(Cat cat)        {            cats.Add(cat)        }        ...}

于是原来的对象集合就被我们封装到了一个自定义的类里,原来的代码就可以改为

Cats cats = new Cats();Cats.add(cat);

总之我觉得变好看了(* ̄︶ ̄),
不过这样做也有缺点,直接在类里定义集合时,如果不写获取内部集合的方法,对外部代码来说,List类本身的方法全部被过滤掉了(外部代码:”List是啥,我只认识Cats”)。如果还是需要原来集合的方法,可以用继承或接口来实现
如下(一般用不到接口吧)

public class myList extends ArrayList <String>{    private static final long serialVersionUID = 1L;    //自己定义点方法    public void add(int num)    {       this.add(num+"");    }}

然后就可以使用了(得到了一个可以添加int 和 String 的String集合)

myList M = new myList();M.add(1);M.add("hello world");

双例集合同理

public class myMap extends HashMap <String,Object>{    //自己定义点方法    public void put(int num,Object ob)    {       this.put(num+"",ob);    }}

需要注意下要添加泛型的约束(当然不加也行 M< T >extends ArryList < T >)
不过谁让我是想省代码呢 []~( ̄▽ ̄)~*

附上两张图
单例集合和双例集合的简单关系图解

这里写图片描述

这里写图片描述