前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >经典笔试题-集合篇

经典笔试题-集合篇

作者头像
cwl_java
发布2020-02-18 17:40:06
4940
发布2020-02-18 17:40:06
举报
文章被收录于专栏:cwl_Javacwl_Java

集合部分:(共11 题:基础11 道)

70、介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)【基础】 答:Collection FrameWork 如下:

代码语言:javascript
复制
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap

Collection 是最基本的集合接口,一个Collection 代表一组Object,即Collection 的元素(Elements); Map 提供key 到value 的映射。

71、List,Set,Map 是否继承自Collection 接口?【基础】 答:List,Set 是;Map 不是。

72、你所知道的集合类都有哪些?主要方法?【基础】 答:最常用的集合类是List 和Map。List 的具体实现包括ArrayList 和Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List 适用于按数值索引访问元素的情形。Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。

73、说出ArrayList,Vector, LinkedList 的存储性能和特性?【基础】 答:ArrayList 和Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了synchronized 方法(线程安全),通常性能上较ArrayList 差,而LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

74、Collection 和Collections 的区别?【基础】 答:Collection 是java.util 下的接口,它是各种集合的父接口,继承于它的接口主要有Set 和List;Collections 是个java.util 下的类,是针对集合的帮助类,提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

75、HashMap 和Hashtable 的区别? 【基础】 答:二者都实现了Map 接口,是将惟一键映射到特定的值上;主要区别在于:

  1. HashMap 没有排序,允许一个null 键和多个null 值,而Hashtable 不允许;
  2. HashMap 把Hashtable 的contains 方法去掉了,改成containsvalue 和containsKey,因为contains 方法容易让人引起误解;
  3. Hashtable 继承自Dictionary 类,HashMap 是Java1.2 引进的Map 接口的实现;
  4. Hashtable 的方法是Synchronize 的,而HashMap 不是,在多个线程访问Hashtable 时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。Hashtable 和HashMap 采用的hash/rehash 算法大致一样,所以性能不会有很大的差异。

76、Arraylist 与Vector 区别?【基础】 答:就ArrayList 与Vector 主要从二方面来说:

  1. 同步性:Vector 是线程安全的(同步),而ArrayList 是线程序不安全的;
  2. 数据增长:当需要增长时,Vector 默认增长一倍,而ArrayList 却是一半。

77、List、Map、Set 三个接口,存取元素时,各有什么特点?【基础】 答:List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value 值,value 可多值。

78、Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 【基础】 答:Set 里的元素是不能重复的,用equals ()方法来区分重复与否。覆盖equals()方法用来判断对象的内容是否相同,而”==”判断地址是否相等,用来决定引用值是否指向同一对象。

79、用程序给出随便大小的10 个数,序号为1-10,按从小到大顺序输出,并输出相应的序号。【基础】 答:代码如下:

代码语言:javascript
复制
public class RandomSort {
	public static void printRandomBySort() {
		Random random = new Random(); // 创建随机数生成器
		List list = new ArrayList();
		// 生成10 个随机数,并放在集合list 中
		for (int i = 0; i < 10; i++) {
			list.add(random.nextInt(1000));
		}
		Collections.sort(list); // 对集合中的元素进行排序
		Iterator it = list.iterator();
		int count = 0;
		while (it.hasNext()) { // 顺序输出排序后集合中的元素
			System.out.println(++count + ": " + it.next());
		}
	}
	public static void main(String[] args) {
		printRandomBySort();
	}
}

80、用JAVA 实现一种排序,JAVA 类实现序列化的方法? 在COLLECTION 框架中,实现比较要实现什么样的接口?【基础】 答:用插入法进行排序代码如下:

代码语言:javascript
复制
class InsertSort {
	ArrayList al;
	public InsertSort(int num,int mod) {
		al = new ArrayList(num);
		Random rand = new Random();
		System.out.println("The ArrayList Sort Before:");
		for (int i=0;i<num ;i++ ){
			al.add(new Integer(Math.abs(rand.nextInt()) % mod +
					1));
			System.out.println("al["+i+"]="+al.get(i));
		}
	}
	public void SortIt(){
		Integer tempInt;
		int MaxSize=1;
		for(int i=1;i<al.size();i++){
			tempInt = (Integer)al.remove(i);
			if(tempInt.intValue() >=
					((Integer)al.get(MaxSize-1)).intValue()){
				al.add(MaxSize,tempInt);
				MaxSize++;
				System.out.println(al.toString());
			}else{
				for (int j=0;j<MaxSize ;j++ ){
					if (((Integer)al.get(j)).intValue()
							>=tempInt.intValue()){
						al.add(j,tempInt);
						MaxSize++;
						System.out.println(al.toString());
						break;
					}
				}
			}
		}
		System.out.println("The ArrayList Sort After:");
		for(int i=0;i<al.size();i++){
			System.out.println("al["+i+"]="+al.get(i));
		}
	}
	public static void main(String[] args){
		InsertSort is = new InsertSort(10,100);
		is.SortIt();
	}
}

JAVA 类实现序例化的方法是实现java.io.Serializable 接口;Collection 框架中实现比较要实现Comparable 接口和Comparator 接口。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 集合部分:(共11 题:基础11 道)
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档