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中反射的理解
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加上了一个计算运行时间的方法,注意前置增强和后置增强