11.4容器的打印

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值