Java基础每日10题——第四天

1.Java中ArrayList和LinkedList区别

总结的说:

当操作是在一列数据后面添加或删除数据时,而不是在前面或者中间,并且需要随机访问其中的元素时,使用ArrayList会提供比较好的性能;

当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了

对比来说的话,参考https://blog.csdn.net/hantiannan/article/details/5447567

2.用两个队列模拟堆栈结构

参考https://blog.csdn.net/wangyangkobe/article/details/5910362
到时我再用java实现一下

3.Collection和Map的集成体系

参考我写过的这篇文章https://blog.csdn.net/tryandfight/article/details/79049088

4.Map中的key和value可以为null吗

对于HashMap来说是可以的,对于HashTable来说是不可以的

5.对Java中反射的理解

参考知乎上的理解https://www.zhihu.com/question/24304289

6.写一个ArrayList的动态代理类

public class ArrayList的动态代理类{
    static class ArrayListProxy {
        /**
         * 定义一个返回代理对象的类
         */
        public MyArrayListInterface getArrayListProxy(){
            MyArrayListInterface myArrayListProxy = (MyArrayListInterface) Proxy.newProxyInstance(MyArrayListInterface.class
                    .getClassLoader(), new Class[]{
                    MyArrayListInterface.class
            }, new InvocationHandler() {
                //定义一个myArrayList对象
                private List myArrayList = new MyArrayList();
                @Override
                public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                    //定义记住此时时间的变量
                    long start = System.currentTimeMillis();
                    //执行al的对于方法
                    Object objReturn = method.invoke(myArrayList,proxy);
                    //输出被调用方法执行所需时间
                    System.out.println(method.getName()+"运行时间:"+(System.currentTimeMillis()-start)
                            +"毫秒");
                    //返回被调用方法执行结果
                    return objReturn;
                }
            });
            return myArrayListProxy;
        }
    }
}

/**
 * 定义一个实现MyArrayListInterface的类MyArrayList
 */
class MyArrayList extends ArrayList implements MyArrayListInterface{
    @Override
    public boolean hasNext() {
        return false;
    }

    @Override
    public Object next() {
        return null;
    }
}


/**
 * 定义一个接口,同时继承ArrayList类实现的全部接口
 */
interface MyArrayListInterface<E> extends Serializable,Cloneable,Iterator<E>,
        Collection<E>,List<E>,RandomAccess{

}

这里对原始的ArrayList加上了一个计算运行时间的方法,注意前置增强和后置增强

7.JVM的内存结构和内存分配

参考http://www.importnew.com/19085.html 好文章

8.Java中引用类型都有哪些?

参考http://www.importnew.com/20468.html

9.heap(堆)和stack(栈)有什么区别

参考https://blog.csdn.net/pt666/article/details/70876410

10.解释内存中的堆、栈和方法区的用法

参考https://www.cnblogs.com/dangjunhui/p/5473787.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,402评论 25 708
  • 本系列出于AWeiLoveAndroid的分享,在此感谢,再结合自身经验查漏补缺,完善答案。以成系统。 Java基...
    济公大将阅读 1,539评论 1 6
  • 海黄简介 海南黄花梨亦称"降压木",《本草纲目》中叫降香,其木屑泡水可降血压、血脂,做枕头可舒筋活血。 海南...
    海南金德海黄工艺阅读 2,081评论 0 2
  • 人生的未知不是轻易就可以探索,但我明白,不是所有的都可以重来,走在路上,浅谈笑语间,才明白,幼时的梦魇是多么令人烦...
    否识阅读 406评论 0 0