黑马程序员技术交流社区

标题: 关于数组 添加元素 有谁会吗? 急急!!! [打印本页]

作者: 陈泽伟    时间: 2016-7-22 23:16
标题: 关于数组 添加元素 有谁会吗? 急急!!!
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这个数据
        }
}

作者: 陈泽伟    时间: 2016-7-22 23:17
只使用面向对象及之前的知识
作者: 1208124957    时间: 2016-7-23 00:36
数组固定了  就不能添加元素了吧
作者: HeiMa2Wangkunpe    时间: 2016-7-23 00:39
判断容器中是否包含345这个数据,可以先对数组进行遍历,求出角标,如果没找到角标(返回-1),就表示没有345
作者: cat73    时间: 2016-7-23 00:40
在 add 上实现自动扩容咯
作者: xuexi1922622501    时间: 2016-7-23 00:46
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:47
本帖最后由 xuexi1922622501 于 2016-7-23 00:50 编辑

楼主 我把9换成了2  
作者: 迷茫不堪的年纪    时间: 2016-7-23 00:49
数组是固定的,想添加就用集合, 你这个只是这个类的一些简单方法而已,应该没有什么作用的
作者: 自娱自乐的朋朋    时间: 2016-7-23 01:16
既然你数组固定了还怎么往里加东西呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2