Java——容器

 今天我们讲解的是java中能够动态存放对象的类——容器类。


一、概念:

容器是Java API所提供的一系列类,其实例用于在程序中存放对象。


二、容器类的结构关系图:

 


三、具体讲解


容器类就是存放对象的地方,不同的接口,类就像不同的瓶子一样,装的东西也不太一样,下面我们来具体对每一种接口都进行一下讲解。


1)Collection接口


概念:Collection接口定义了存取一组对象的方法,其子类接口Set和List分别定义了不同的存储方式。


1.1Set接口

Set中的数据对象没有顺序且不可以重复,即“无序唯一”。


它的实现类有很多,我们只讲解其中的HashSet,TreeSet。


HashSet: 为快速查找而设计的Set。存入HashSet的对象必须定义hashCode()。


TreeSet: 保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。


下面我们来举一个HashSet的例子(TreeSet的类似):


例1-1:声明一个Collection类对象c,添加三个元素并单个打印出来

Collection<String> c2 = newHashSet<String>();//如果采用TreeList则直接将HashSet改为TreeList即可。 

c2.add("aaa");

c2.add("bbb"); 

c2.add("ccc");

for(Iterator<String> it = c2.iterator(); it.hasNext(); ) {

String s = it.next();

System.out.println(s);

}


1.2List接口

List中的数据对象有顺序且可以重复,即“有序不唯一”。


下面我们讲解它的两种实现方式:LinkedList和ArrayList。


LinkedList采用的是链表存放元素,改动元素较快,读取元素较慢,即“改快读慢”。


ArrayList采用的是数组存放元素,读取元素较快,改动元素较慢,即“读快改慢”。


下面我们来举一个ArrayList的例子(LinkedList的类似):


例1-2:同例1-1

List<String> c1 = new ArrayList<String>();//如果采用LinkedList则直接将ArrayList改为LinkedList即可。

c1.add("aaa");

c1.add("bbb");

c1.add("ccc");

for(int i=0; i<c1.size(); i++) {

String s = c1.get(i);

System.out.println(s);

}

在使用Set的过程中我们会常用到接口Iterator接口和Comparable接口。


Iterator接口


概念:所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象。


Iterator对象用以实现对容器内元素的遍历操作(参见例1-1)。


Comparable接口


概念:Comparable接口中只有一个方法compareTo(),用以确定类对象的排序方式。

 

2)Map接口


概念:Map接口定义了存储“键(Key)—值(Value)映射对”的方法。

 

我们来说一下它的实现类HashMap和TreeMap。


下面我们来举一个HashMap的例子(TreeMap的类似):


例1-2:声明一个Map类型对象,添加元素并打印。

Map c2 = new HashMap();//如果采用TreeMap则直接将HashMap改为TreeMap即可。

c2.put("aaa",1);

c2.put("bbb",2); 

c2.put("ccc",3);

System.out.println(c2);

 

小结:

Hash即“哈希表”,所以带有Hash的都是采用哈希表的形式来存储数据的,比如HashSet,HashMap;

Linked即“链表”,因此带有Linked的都是采用链表的形式存储数据的,比如LinkedList。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值