读书人

Java容器常用及常见有关问题小测试

发布时间: 2013-01-25 15:55:29 作者: rapoo

Java容器常用及常见问题小测试

package rowsy.learn;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.HashSet;import java.util.LinkedHashSet;import java.util.List;import java.util.Set;import java.util.TreeSet;/** * 1.容器主要分为Collection和Map,Collection是一个坑一个元素,Map是一个坑一对元素(值和键) *  * 2.泛型可以防止将不正确的类型放入容器中  *  * 3.几种常用Set的区别 * HashSet:获取元素最快,存储方式复杂  * TreeSet:按比较结果的升序排列元素 * LinkedHashSet:按插入的顺序排列元素  * 对于几种Map,区别于Set一样,唯一的差别是LinkedHashMap保留了HashMap的查询速度 *  * List的行为与equals()方法相关 *  * 相对于Iterator,ListIterator可以双向移动,还可以从某个元素出开始,ListIterator只能用于List类型 * Collection都实现了iterator()方法 **/class L1 {}class L11 extends L1 {}class L111 extends L11 {}class L112 extends L11 {}class L2 {}class L21 extends L2 {}class L22 extends L2 {}class Pet implements Comparable<Pet> {private int age;public Pet(int age) {this.age = age;}@Overridepublic int compareTo(Pet pet) {if (this.age > pet.age) {return 1;} else if (this.age == pet.age) {return 0;} else {return -1;}}}public class LearnCollection {public static void main(String[] args) {List<String> list = Arrays.asList("ronnie", "john", "mark");// 1.Arrays.asList()转化来的list不可以改变大小,因为底层是数组// list.add("trump");// list.remove(1);System.out.println(list);List<L1> listL = Arrays.asList(new L1(), new L111(), new L11());// 2.Arrays.asList对他所产生的类型做最理想的假设,例如L111和L112可转化为L11和L1,但它并不这么认为// 编译器会说cannot convert from List<L11> to List<L1>// listL = Arrays.asList(new L111(), new L112());// 3.加上显示类型说明可以避免此类错误listL = Arrays.<L1> asList(new L111(), new L112());String[] names = { "ronnie", "john", "mark", "trump" };// 证明几种Set中元素的排序方式是不同的Set<String> hashSet = new HashSet<String>();Set<String> linkedHashSet = new LinkedHashSet<String>();Set<String> treeSet = new TreeSet<String>();Collections.addAll(hashSet, names);Collections.addAll(linkedHashSet, names);Collections.addAll(treeSet, names);System.out.println(hashSet);System.out.println(linkedHashSet);System.out.println(treeSet);System.out.println("===============");List<String> nameList = new ArrayList<>(Arrays.asList(names));System.out.println(nameList);nameList.clear();System.out.println(nameList);Pet pet1 = new Pet(12);Pet pet2 = new Pet(14);System.out.println((pet1.compareTo(pet2) > 0) ? "true" : "false");}}


输入结果如下:

[ronnie, john, mark]
[john, mark, trump, ronnie]
[ronnie, john, mark, trump]
[john, mark, ronnie, trump]
===============
[ronnie, john, mark, trump]
[]
false

读书人网 >编程

热点推荐