A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1、回想一下数组的缺点?
   长度!!!只要声明一个数组,长度就固定了
   采用封装思想对数组进行封装

/**
容器
*/
class Vector{
        private int[] value = new int[10];

        /**
                向容器中添加数据
        */
        public void add(int val){
                //把val添加到value数组中,注意:我可以无限制调用add方法
        }
       
        /**
                通过索引获取数据
        */
        public int get(int index){
        }

        /**
                判断val这个数据在不在容器中
        */
        public boolean contains(int val){
       
        }

        public static void main(String[] args){
       
                Vector v = new Vector();
                v.add(1);
                v.add(3);
                ...添加1000个数据

                将容器中的数据全部打印出来
               
                判断容器中是否包含345这个数据
        }
}

8 个回复

倒序浏览
只使用面向对象及之前的知识
回复 使用道具 举报
数组固定了  就不能添加元素了吧
回复 使用道具 举报
判断容器中是否包含345这个数据,可以先对数组进行遍历,求出角标,如果没找到角标(返回-1),就表示没有345
回复 使用道具 举报
cat73 黑马帝 2016-7-23 00:40:52
报纸
在 add 上实现自动扩容咯
回复 使用道具 举报
class Vector{
        private int[] value = new int[2];
        private int count = 0;
        /**
                向容器中添加数据
        */
        public void add(int val){
           //把val添加到value数组中,注意:我可以无限制调用add方法
                if(count<2){
                        value[count] = val;
                        count++;
                }else{
                        int[] otherVal = new int[value.length+1];
                        //采用数组复制的方式
                        System.arraycopy(value, 0, otherVal, 0, value.length);
                        otherVal[value.length]=val;
                        value = otherVal;
                }
        }
        
        /**
                通过索引获取数据
        */
        public int get(int index){
                if(index>=value.length){
                        throw new ArrayIndexOutOfBoundsException("ArrayIndexOutOfBounds");
                }else{
                        return value[index];
                }
        }

        /**
                判断val这个数据在不在容器中
        */
        public boolean contains(int val){
                for (int i = 0; i < value.length; i++) {
                                if(value[i]==val){
                                        return true;
                                }
                        }
                return false;
        }

        public static void main(String[] args){
        
                Vector v = new Vector();
                //...添加1000个数据
                for (int i = 1; i <= 1000; i++) {
                                        v.add(i);
                                }

                //将容器中的数据全部打印出来
                for (int i = 0; i < v.value.length; i++) {
                                        System.out.println(v.value[i]);
                                }
                //判断容器中是否包含345这个数据
                boolean exist = v.contains(345);
                if(exist){
                        System.out.println("存在");
                }else{
                        System.out.println("不存在");
                }
        }
}
回复 使用道具 举报
本帖最后由 xuexi1922622501 于 2016-7-23 00:50 编辑

楼主 我把9换成了2  
回复 使用道具 举报
数组是固定的,想添加就用集合, 你这个只是这个类的一些简单方法而已,应该没有什么作用的
回复 使用道具 举报
既然你数组固定了还怎么往里加东西呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马