您的位置:首页 > 编程语言 > Java开发

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

2018-03-23 08:06 453 查看

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来说是不可以的,对应HashMap的值的时候,如果希望输出的结果跟我们输入的结果一致的话,可以用API列名的ListOrderedMap来满足要求。

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: