1. List、Map、Set三个接口,存取元素时,各有什么特点?(面试题) 首先,List与Set具有相似性,它们都是单列元素的集合,所以,它们有一个功共同的父接口,叫Collection。 Set里面不允许有重复的元素, Set集合的add方法有一个boolean的返回值,当集合中没有某个元素,此时add方法可成功加入该元素时,则返回true,当集合含有与某个元素equals相等的元素时,此时add方法无法加入该元素,返回结果为false。Set取元素时,没法说取第几个,只能以Iterator接口取得所有的元素,再逐一遍历各个元素。· List表示有先后顺序的集合 一个对象可以被反复存储进List中,每调用一次add方法,这个对象就被插入进集合中一次,其实,并不是把这个对象本身存储进了集合中,而是在集合中用一个索引变量指向这个对象,当这个对象被add多次时,即相当于集合中有多个索引指向了这个对象,如图x所示。List除了可以以Iterator接口取得所有的元素,再逐一遍历各个元素之外,还可以调用get(index i)来明确说明取第几个。 Map与List和Set不同,它是双列的集合,其中有put方法,每次存储时,要存储一对key/value,不能存储重复的key,这个重复的规则也是按equals比较相等。 取则可以根据key获得相应的value,即get(Object key)返回值为key 所对应的value。另外,也可以获得所有的key的结合,还可以获得所有的value的结合,还可以获得key和value组合成的Map.Entry对象的集合。 List 以特定次序来持有元素,可有重复元素。 Set 无法拥有重复元素,内部排序。 Map 保存key-value值,value可多值。 HashSet按照hashcode值的某种运算方式进行存储,而不是直接按hashCode值的大小进行存储。 LinkedHashSet按插入的顺序存储,那被存储对象的hashcode方法还有什么作用呢? hashset集合比较两个对象是否相等,首先看hashcode方法是否相等,然后看equals方法是否相等。new 两个Student插入到HashSet中,看HashSet的size,实现hashcode和equals方法后再看size。 同一个对象可以在Vector中加入多次。往集合里面加元素,相当于集合里用一根绳子连接到了目标对象。往HashSet中却加不了多次的。 2.
你所知道的集合类都有哪些?主要方法?(面试题)最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。 Collection List ArrayList Vector Set HashSet TreeSet Propeties HashTable Map Treemap HashMap 3. Collection 和 Collections的区别。Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 4. 字节流与字符流的区别 1、到底使用谁 如果在写数据的时候需要另起一行或者读数据的时候一行一行读就用字符缓冲流:BufferedReader & BufferedWriter 如果操作的是文本就用字符流,因为操作比较方便。否则就用字节流 如果根本不知道用哪个,就用字节流,因为字节流很强大 2、复制文本文件 (1)复制文本文件的几种方式 字节流: 4 种 基本流一次读写一个字节 基本流一次读写一个字节数组 高效流一次读写一个字节 高效流一次读写一个字节数组 字符流: 5 种 基本流一次读写一个字符 基本流一次读写一个字符数组 高效流一次读写一个字符 高效流一次读写一个字符数组 高效流一次读写一个字符串 (2)推荐 既然是文本文件那么用字符串缓冲流读写是最好的方式 * 字符流也可以拷贝文本文件, 但不推荐使用. 因为读取时会把字节转为字符,写出时还要把字符转回字节. * 程序需要读取一段文本, 或者需要写出一段文本的时候可以使用字符流 * 读取的时候是按照字符的大小读取的,不会出现半个中文 * 写出的时候可以直接将字符串写出,不用转换为字节数组
|