11.4容器的打印

来源:互联网 发布:nba数据统计排名 编辑:程序博客网 时间:2024/05/29 19:03

11.4容器的打印
使用Arrays.toString()来产生数组的可打印表示:
package cn.wangs.c11.$11_4;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;

public class PrintingContainers {
static Collection fill(Collection collection) {
collection.add(“rat”);
collection.add(“cat”);
collection.add(“dog”);
collection.add(“dog”);
return collection;
}

static Map fill(Map<String, String> map) {    map.put("rat", "rat");    map.put("cat", "cat");    map.put("dog", "dog1");    map.put("dog", "dog2");    return map;}public static void main(String[] args) {    System.out.println(fill(new ArrayList<String>()));    System.out.println(fill(new LinkedList<String>()));    System.out.println(fill(new HashSet<String>()));    System.out.println(fill(new TreeSet<String>()));    System.out.println(fill(new HashMap<String, String>()));    System.out.println(fill(new TreeMap<String, String>()));    System.out.println(fill(new LinkedHashMap<String, String>()));}

}
[rat, cat, dog, dog]
[rat, cat, dog, dog]
[cat, dog, rat]
[cat, dog, rat]
{cat=cat, dog=dog2, rat=rat}
{cat=cat, dog=dog2, rat=rat}
{rat=rat, cat=cat, dog=dog2}

展示了java容器类库中的两种主要类型:他们的区别在于容器中每个“槽”保存的元素个数。Collection在每个槽中只能保存一个元素。此类容器包括:List(它以特定的顺序保存一组元素)、Set(元素不重复)、Queue(只能运行在容器的一“端”插入对象,并从另一端移除对象)、Map(在每个槽内保存两个对象,即键和与之相关联的值).
查看输出结果:默认的打印行为为容器提供的toString().Collection打印结果用[],元素用逗号隔开;Map的打印结果用{},元素用逗号隔开,键在等号左边,值在等号右边。
ArrayList和LinkedList都是List类型,他们按照插入的顺序保存元素,不同之处在于性能。
HashSet、TreeSet和LinkedHashSet都是Set类型,输出显示在Set中,重复的元素只保留一个,HashSet储存元素时相当复杂的。是最快获取元素的方式,存储顺序意义不大的情况下用它。在意存储顺序用TreeSet,它按照比较结果的升序保存对象,或者使用LinkedHashSet它按照被添加的顺序保存对象。
Map(关联数组)可以用键来查找对象,就像一简单的数据库。键所关联的对象称为值。几乎像使用数组下标一样,对于每一个键,Map只接受存储一次。
Map.put(key,value)将增加一值(你想要添加的对象),并将它与某个键关联起来。Map.get(key)方法将产生与这个键相关的值。
若不指定Map的大小,它将自动调整。
键和值在Map中保存顺序不是他们的插入顺序,是HashMap实现使用的一种很快的算法类控制的顺序的。
HashMap提供了最快的查找技术,没有按照顺序来保存其元素;TreeMap按照比较结果的升序保存键,而LinkedHashMap则按照插入顺序保存键,同时还保留了hashMap的查询速度。
练习4:创建一个生成器类,它可以在每次调用next()时,产生你喜欢的电影(你可以使用Snow white或star wars)的字符构成的名字(作为String对象)。在字符列表中的电影名用完之后,循环到这个字符列表的开始处,使用这个生成器填充数组,ArrayList,LinkedList,HashSet,LinkedHashSet,TreeSet,然后打印每一个容器。
package cn.wangs.c11.$11_4;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.LinkedList;

/**
*
* @ClassName: Test4 //创建一个生成器类,它可以在每次调用其next()方法时,产生你由你最喜欢的电影 (你可以使用Snow
* White或Star Wars)的字符构成的名字(作为String对象)。对字符列表中的电影名
* 用完之后,循环到这个字符列表的开始处。使用这个生成器来填充数组、ArrayList、LinkedList、HashSet
* LinkedHashSet和TreeSet,然后打印每一个容器。
*/
public class Test4 {
public static void main(String[] args) {
Builder builder = new Builder();
System.out.println(builder.next(new ArrayList()));
System.out.println(builder.next(new LinkedList()));
System.out.println(builder.next(new HashSet()));
System.out.println(builder.next(new LinkedHashSet()));
}
}

class Builder {
Collection next(Collection c) {
c.add(“明日边缘”);
c.add(“大闹天宫”);
c.add(“釜山行”);
return c;
}
}

0 0