问题一:
private List<String> vechicles = new ArrayList<String>();
// 这里为什么是用List而不是其它集合,后面怎么又变成ArrayList了?这样有什么 好处吗?
使用什么集合要看需求,
List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。
|--ArrayList:底层的数据结构是数组,线程不同步,ArrayList替代了Vector,查询元素的速度非常快。
|--LinkedList:底层的数据结构是链表,线程不同步,增删元素的速度非常快。
|--Vector:底层的数据结构就是数组,线程同步的,Vector无论查询和增删都巨慢。
Set接口中的方法和Collection中方法一致的。Set接口取出方式只有一种,迭代器。
|--HashSet:底层数据结构是哈希表,线程是不同步的。无序,高效;
|--LinkedHashSet:有序,hashset的子类。
|--TreeSet:对Set集合中的元素的进行指定顺序的排序。不同步。TreeSet底层的数据结构就是二叉树。
问题二:
pool.execute(new Runnable()//这里线程的创建既不是实现实现Runnable,也不是继承Thread,这
// 是新的创建方式吗?用继承和实现不能解决问题吗?
这是新技术中提供的线程池的概念,方便了程序的书写,提高了效率,其实内部还是实现的Runnable()接口。 |