现在的位置: 首页 > 综合 > 正文

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

2014年11月25日 ⁄ 综合 ⁄ 共 2170字 ⁄ 字号 评论关闭
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;
	}

	@Override
	public 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

抱歉!评论已关闭.