java中的集合类

首先得明白什么叫做类集,以及它的作用是什么?

类集实际上就是一个动态的对象数组,有人就会问了,不是有数组了吗?还要类集干嘛呢,其实啊,一般的数组都有一个长度的限制不,类集就是专门来解决这种限制的,使用类集可以很方便的向数组中增加任意多个数据,是很容易进行扩展和修改的。

我们来了解了解类集的架构,所有类集操作都存放在java.util包中:


Collection接口

是保存单值集合的最大父接口,但是在一般的开发中,都不直接用Collection进行开发(操作意义不明确),而是使用其子接口进行开发


List接口内容允许重复。

ArrayList是List中最常用的子类,是一个基于数组的操作类。既可以增加数据,也可以删除数据。删除可通过两种方式删除:根据对象内容,根据对象对应的编号删除。

LinkedList也是List的子类,是一个基于链表的操作类。

Vector也是List的子类,它和ArrayList的区别在:


Set接口:不允许有重复元素,常用的子类有TreeSet(有序存放),HashSet(散列存放)。

TreeSet可以进行排序,那么它排序其中的原理是什么呢?一个对象数组要想排序,则依靠Comparable接口完成。所以对于TreeSet来说,其对象所在的类也必须实现Comparable接口,并且覆写其中的compareTo方法。


Set接口中不允许有重复元素,这其中的原理又是什么呢?通过覆写Object类中的hashCode()和equals()两个方法来实现对对象元素重复的判断。


SortedSet接口:也是具有排序功能,它是TreeSet的父接口,所以TreeSet也具有排序的功能。



在集合中的输出操作一般有以下几种方式:

1.Iterator2.ListIterator3.foreach输出4.Enumeration输出

Iterator接口(单向输出)

只要是碰到了集合输出的操作,就一定使用Iterator接口,因为这是最标准的做法。而Iterator接口的操作原理是什么呢?将元素一个个进行判断,判断是否有内容,有就将内容取出来。

要想实例化Iterator接口,必须依靠Collection接口来完成。

SortedSet<String> set = new TreeSet<String>();
		set.add("1");
		set.add("3");
		set.add("2");
		Iterator it = set.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
虽然在 Iterator接口中也提供了remove()方法来删除当前的对象,但是在实际中很少用Iterator接口来实现删除操作的,主要用来输出内容。在这有一个注意点:如果在迭代输出的过程中使用了set中的remove()来执行删除,则代码会出现问题,马上跳出迭代循环。

ListIterator接口(双向输出)

它和Iterator接口的区别在:

1.Iterator用来遍历List,Set;而LIstIterator只能遍历List。

2.Iterator只能前向遍历;而ListIterator可以双向遍历。

3.ListIterator实现了Iterator接口,并包含其他功能。


注意点:在使用ListIterator接口进行向后输出时,必须在之前进行向前输出。


Enumeration输出:

只能通过Vector来实例化。


Map接口

Map接口和Collection接口的区别:

Collection接口存的都是一个对象,单值对象;

Map接口存的对象是以键值对(K-V)的形式存在。




Map接口的常用子类:

HashMap:无序,是新的操作类,key值不能重复。

HashTable:无序,是旧的操作类,key值不能重复。

TreeMap:按key值排序,key值不能重复。

WeekHashMap:弱引用的Map集合,当集合中的一些对象不再使用时,可以使用gc进行回收

IdentityHashMap:key值可以重复。




Map接口的Iterator输出:

1.将Map的实例通过entrySet()方法变为Set接口对象;

2.通过Set接口实例为Iterator实例化;

3.通过Iterator迭代输出。每个内容都是Map.Entry的对象;

4.通过Map.Entry进行key-->value的分离。


Map接口的foreach输出:

for(Map.Entry<String,String> en : map.entrySet()){...... }


SortedMap接口:具有排序功能,它是TreeMap的父接口,所以TreeMap也具有排序的功能。


Collections类:

它和Collection接口之间有什么联系呢?

两者之间并没有什么继承和实现的联系,只不过Collections类提供了一些对于Collection接口操作的支持。


Stack类:

Stack类是Vector的子类,提供对于栈的相关操作。


Properties类:

Properties类是HashTable的子类,提供对于属性的相关操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值