zoukankan      html  css  js  c++  java
  • 动态数组

    import java.util.Iterator;
    
    /**
     * 动态数组
     * 成员变量:容器数组arr,元素个数count
     * 私有方法:调整数组大小resize()
     * 公开方法:添加元素add()、删除元素delete()、获取大小size()、判断是否为空isEmpty()
     * 要求:实现泛型、迭代器、
     */
    public class DynamicArray<Item> implements Iterable<Item> {
        private Item[] arr;
        private int count;
    
        public DynamicArray() {
            arr = (Item[])new Object[5];
            count = 0;
        }
        public DynamicArray(int n) {
            arr = (Item[])new Object[n];
            count = 0;
        }
    
        private void resize(int size){
            Item[] temp =  (Item[])new Object[size];
            for(int i=0;i<arr.length;i++){
                temp[i]=arr[i];
            }
            arr = temp;
        }
        public void add(Item e){
            if(arr.length == count){
                resize(2*arr.length);
            }
            arr[count]=e;
            count++;
        }
        public boolean delete(Item e){
            for(int i=0;i<count;i++){
                if(arr[i]==e){
                    for(int j=i;j<count-1;j++){
                        arr[j]=arr[j+1];
                    }
                    arr[count]=null;
                    count--;
                    return true;
                }
            }
            return false;
        }
        public int size(){
            return count;
        }
        public boolean isEmpty(){
            if(count==0) return true;
            return false;
        }
    
        @Override
        public Iterator<Item> iterator() {
            return new Iterator<Item>() {
                int i=0;
                @Override
                public boolean hasNext() {
                    if(i<count) return true;
                    return false;
                }
    
                @Override
                public Item next() {
                    return arr[i++];
                }
            };
        }
    }
    /**
     * 测试案例
     */
    public class TestCase {
        public static void main(String[] args) {
            DynamicArray<Integer> integerDynamicArray = new DynamicArray<>();
            integerDynamicArray.add(1);
            integerDynamicArray.add(2);
            integerDynamicArray.add(3);
            integerDynamicArray.add(4);
            integerDynamicArray.add(5);
            integerDynamicArray.add(6);
            integerDynamicArray.add(7);
            integerDynamicArray.delete(4);
            System.out.println(integerDynamicArray.size());
            System.out.println(integerDynamicArray.isEmpty());
            System.out.println("======================");
            for(Integer e :integerDynamicArray){
                System.out.println(e);
            }
        }
    }
    //结果
    6
    false
    ======================
    1
    2
    3
    5
    6
    7
  • 相关阅读:
    【Java并发】详解 AbstractQueuedSynchronizer
    【Java 并发】详解 ThreadLocal
    【应用】Markdown 在线阅读器
    【HTML5】Canvas 内部元素添加事件处理
    【HTML5】Canvas 实现放大镜效果
    分享一款Markdown的css样式
    【Pthreads】Pipeline Model(Assembly Line)示例
    简单实现依赖注入(无框架)
    JavaWeb 简单实现客户信息管理系统
    Python中模块的发布与安装
  • 原文地址:https://www.cnblogs.com/youzoulalala/p/11089745.html
Copyright © 2011-2022 走看看