java中的集合框架

java中的集合框架,其中定义了许多的用于存储数据的容器。

对于集合容器,因为每个容器的内部数据结构不同,也到值其具有不同的特点。




其中,Collection为java集合中的顶层接口。

Collection:

    |--List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。

    |--Set:无序(存入和取出顺序有可能不一致),不可以存储重复元素。必须保证元素唯一性。

List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。

    |--ArrayList:底层的数据结构是数组,线程不同步,ArrayList替代了Vector,查询元素的速度非常快。

    |--LinkedList:底层的数据结构是链表,线程不同步,增删元素的速度非常快。

    |--Vector:底层的数据结构就是数组,线程同步的,Vector无论查询和增删都巨慢。

Set接口中的方法和Collection中方法一致的。Set接口取出方式只有一种,迭代器。

  |--HashSet:底层数据结构是哈希表,线程是不同步的。无序,高效;

      HashSet集合保证元素唯一性:通过元素的hashCode方法,和equals方法完成的。

      当元素的hashCode值相同时,才继续判断元素的equals是否为true。

      如果为true,那么视为相同元素,不存。如果为false,那么存储。

      如果hashCode值不同,那么不判断equals,从而提高对象比较的速度。

      |--LinkedHashSet:有序,hashset的子类。

  |--TreeSet:对Set集合中的元素的进行指定顺序的排序。不同步。TreeSet底层的数据结构就是二叉树。


Map集合:

|--Hashtable:底层是哈希表数据结构,是线程同步的。不可以存储null键,null值。

|--HashMap:底层是哈希表数据结构,是线程不同步的。可以存储null键,null值。替代了Hashtable.

|--TreeMap:底层是二叉树结构,可以对map集合中的键进行指定顺序的排序。


以上为我们常用的集合对象以及它们对应的特点。

对于Map集合和Collection主要有一下不同点:

Collection一次存一个元素;Map一次存一对元素。

Collection是单列集合;Map是双列集合。

Map中的存储的一对元素:一个是键,一个是值,键与值之间有对应(映射)关系。

特点:要保证map集合中键的唯一性。


为了便于操作所有的Collection集合容器,取出元素。将容器内部的取出方式按照一个统一的规则向外提供,这个规则就是Iterator接口。

一下为一个简单例子:

public static void main(String[] args) {
		Collection arr = new ArrayList();
		arr.add("thomas");
		arr.add("luc");
		arr.add("tom");
		//--------------方式1----------------------
		Iterator it = arr.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
		//--------------方式2----------------------
		for(Iterator it = arr.iterator();it.hasNext(); ){
			System.out.println(it.next());
		}
	}<span style="font-weight: bold;">
</span>

对于map集合容器的操作主要有两种方式:

第一种:keySet()方法。

可以将map集合中的键都取出存放到set集合中。对set集合进行迭代。迭代完成,再通过get方法对获取到的键进行值的获取。

Set keySet = map.keySet();
Iterator it = keySet.iterator();
while(it.hasNext()) {
     Object key = it.next();
     Object value = map.get(key);
     System.out.println(key+":"+value);
}

第二种:entrySet()方法。

Set entrySet = map.entrySet();
Iterator it = entrySet.iterator();
while(it.hasNext()) {
    Map.Entry  me = (Map.Entry)it.next();
    System.out.println(me.getKey()+"::::"+me.getValue());
}





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值