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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 伊乐杰 中级黑马   /  2016-3-26 23:52  /  448 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/**
该题难度系数较高,是对一维数组组、循环、选择语句、封装思想的一个综合练习题
对将来学习的字符串,StringBuffer\StringBuilder,集合和IO都会有很大的帮助
       
       
       
题目:去除数组中的重复元素
          比如原数组为int[] arr = {1,1,2,2,3,4,6,6};
          去重后为int[] arr = {1,2,3,4,6};
          用自定义类(MyArrayList实质就是一个容器)去实现以上需求。
          以下是自定义类的大体框架,将代码填写完整

*/
class MyArrayList
{

        /**
                将num添加到容器中
        */
        public void add(int num){
       
        }

        /**
                获取容器中某个位置所对应的数据
        */
        public int get(int index){
       
        }
       
        /**
                将该容器对象转换成数组对象
        */
        public int[] toArray(){
       
        }

        /**
                获取该容器中存储了多少个数据
        */
        public int size(){
               
        }
        /**
                判断num是否存在于该容器中,如果存在返回true
        */
        public boolean contains(int num){
               
        }
        /**
                删除数组中的所有元素
        */
        public void clear(){
       
        }

        /**
                判断该容器是为空,如果该容器中有数据返回true,否则返回false
        */
        public boolean isEmpty(){
               
        }


        /**
                显示容器中的所有数据,比如容器中有1,2,4
                返回值应该是[1,2,4]
        */
        public String toString(){
       
        }
       
        /**
                判断传入的容器中的数据是不是和我当前容器中的数据相同
        */
        public boolean equals(Object obj){
       
        }

        /**
                测试方法
        */
        public static void main(String[] args){
                MyArrayList mal = new MyArrayList();
                //向mal容器中添加4个元素
                mal.add(23);
                mal.add(45);
                mal.add(45);
                mal.add(34);

                //遍历容器中的元素
                for(int i=0; i<mal.size(); i++){
                        System.out.println(mal.get(i));
                }

                //将容器转换成数组对象
                int[] arr = mal.toArray();
                System.out.println(arr);

                //判断34是否存在于该容器中,输出true存在,flase表示不存在
                boolean flag = mal.contains(34);
                System.out.println(flag);

                //清除容器中的所有元素
                mal.clear();
                System.out.println(mal.size());//输出0表示清除成功

                //测试该容器中是否为空
                boolean isEmpty = mal.isEmpty();
                if(isEmpty){
                        System.out.println("该容器中无任何元素");
                }

        }
}

6 个回复

倒序浏览
求大神来解答!
回复 使用道具 举报

好难啊,真心学不会
回复 使用道具 举报
以晕在厕所
回复 使用道具 举报
/**
* /**
                该题难度系数较高,是对一维数组组、循环、选择语句、封装思想的一个综合练习题
                对将来学习的字符串,StringBuffer\StringBuilder,集合和IO都会有很大的帮助
                题目:去除数组中的重复元素
                  比如原数组为int[] arr = {1,1,2,2,3,4,6,6};
                  去重后为int[] arr = {1,2,3,4,6};
                  用自定义类(MyArrayList实质就是一个容器)去实现以上需求。
                  以下是自定义类的大体框架,将代码填写完整
* @author Administrator
*
*/

public class MyArrayList {
        /**
         * 定义一个基础长度为2的数组作为容器;
         */
        private int[] array = new int[2];;
        /**
         * 设置计数器count,计数,并作为数组下标
         */
        private int count;
        /**
         * 设置一个钥匙key,用于当数组容量超出时,创建新数组的容量与原数组的递增关系
         */
        private int key = 1;
        //private String str;
        /**
                将num添加到容器中
        */
        public void add(int num){
                if (count == array.length - 1){
                        int[] temp = array;
                         array = new int[2*(++key)];
                         for (int i = 0; i < temp.length; i++) {
                                array[i] = temp[i];
                        }
                }
                array[count++] = num;
                 
        }
       
        /**
                获取容器中某个位置所对应的数据
        */
        public int get(int index){
                int data = array[index];
                return data;
        }
       
        /**
                将该容器对象转换成数组对象
        */
        public int[] toArray(){
                int[] arrays = new int[count];
                for (int i = 0; i < count; i++) {
                        arrays[i] = array[i];
                }
                return arrays;
        }
       
        /**
                获取该容器中存储了多少个数据
        */
        public int size(){
                return count;
        }
        /**
                判断num是否存在于该容器中,如果存在返回true
        */
        public boolean contains(int num){
                for (int i = 0; i < count; i++) {
                        if (num == array[i]) {
                                return true;
                        }
                }
                return false;
        }
        /**
                删除数组中的所有元素
        */
        public void clear(){
                count = 0;
        }
       
        /**
                判断该容器是为空,如果该容器中有数据返回true,否则返回false
        */
        public boolean isEmpty(){
                if (array.length == 0) {
                        return false;
                }
                return true;
        }
        /**
        显示容器中的所有数据,比如容器中有1,2,4
        返回值应该是[1,2,4]
        */
        public String toString(){
                String str = "[";
                for (int i = 0; i < count; i++) {
                        if (i == count - 1) {
                                str = str + array[i];
                        }else {
                                str = str + array[i] + ",";
                        }
                }
                str += "]";
                return str;
        }
       
        /**
                判断传入的容器中的数据是不是和我当前容器中的数据相同
        */
        public boolean equals(Object obj){
                if (! (obj instanceof MyArrayList)) {
                        return false;
                }
                MyArrayList mal = (MyArrayList) obj;
                if (this.size() != mal.size()) {
                        return false;
                }
                boolean sign = true;
                for (int i = 0; i < count;i++) {
                        if (this.array[i] == mal.toArray()[i]) {
                                sign = true;
                        }else {
                                sign = false;
                                break;
                        }
                }
                return sign;
        }
        /**
         * deleteRepeat(删除重复)
         */
        public int[] deleteRepeat(int[] arr) {
                int key = 0;
                for (int i = 0; i < arr.length; i++) {
                        if (this.size() == 0) {
                                key = arr[i];
                                this.add(arr[i]);
                        }else if(arr[i] != key) {
                                key = arr[i];
                                this.add(arr[i]);
                        }       
                }
                 
                return this.toArray();
        }
        /**
                测试方法
        */
        public static void main(String[] args){
                //demo1();
                //demo2();
                /*
                 * 题目:去除数组中的重复元素
                          比如原数组为int[] arr = {1,1,2,2,3,4,6,6};
                          去重后为int[] arr = {1,2,3,4,6};
                 */
                int[] arr = {1,1,2,2,3,4,6,6};
                MyArrayList ml = new MyArrayList();
                int[] arr1 = ml.deleteRepeat(arr);
                System.out.println(ml);
                for (int i = 0; i < arr1.length; i++) {
                        System.out.println(arr1[i]);
                }

        }

        private static void demo2() {
                MyArrayList mal = new MyArrayList();
                mal.add(10);
                mal.add(11);
                mal.add(12);
                mal.add(13);
                mal.add(14);
               
                /*将容器转化成数组并进行遍历*/
                int[] arr = mal.toArray();
                for (int i = 0; i < arr.length; i++) {
                        System.out.println(arr[i]);
                }
                System.out.println("----------");
               
                /*判断容器是否为,空就返回false,否则就返回true*/
                System.out.println(mal.isEmpty());
                /*判断容器是否存在指定元素,有就返回true,否则就返回false*/
                System.out.println(mal.contains(1));
                System.out.println(mal.contains(13));
                /*返回容器中元素的个数*/
                System.out.println(mal.size());
                /*调用toString方法,返回容器中所有元素*/
                System.out.println(mal);
                /*清空容器*/
                mal.clear();
                System.out.println(mal.size());
                /*
                MyArrayList mal1 = new MyArrayList();
                mal1.add(10);
                mal1.add(11);
                mal1.add(12);
                mal1.add(13);
                mal1.add(14);
                */
                /*比较两个容器中的元素是否相等,相等则返回true,否则返回false*/
                /*System.out.println(mal1.equals(mal));
                mal1.add(15);
                System.out.println(mal1.equals(mal));*/
        }
回复 使用道具 举报
同晕在厕所~- -!!
回复 使用道具 举报
会集合差不多就能做出来了,,, 何况是个补代码的题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马