集合

集合和数组的区别

  1. 数组明确了它容纳的数据类型,而集合不声明。
  2. 数组是静态的,具有固定的大小,一旦创建就不可以再改变大小;集合是动态的,可以根据需求动态改变大小。
  3. 数组是java的内置数据类型,它的静态定长以及数据类型的事先声明特性,决定了它的执行效率或者类型检查都是最快的。

再明确几个概念collection、Collection、Collections

  • collection 集合,用来表示任何一种数据结构
  • Collection 集合接口,指java.util.Collection,是集合的超类接口
  • Collections 集合的工具类,指java.util.Collections。Collections是一个包装类,包含了操作集合的各种静态方法,此类不可以实例化,当做工具类用就可以了。

Collection接口

Collection接口是Set、List、Queue接口的父接口,提供了集合比较常用的一些方法。
add(E e)    将指定对象添加到集合中
remove(Object o)    将指定的对象从集合中移除,移除成功返回true,不成功返回false
contains(Object o)  查看该集合中是否包含指定的对象,包含返回true,不包含返回flase
size()  返回集合中存放的对象的个数。返回值为int
clear()     移除该集合中的所有对象,清空该集合。
iterator()  返回在此集合元素上进行迭代的迭代器 Iterator<E>,用来循环遍历集合
toArray()   返回一个包含所有对象的数组,类型是Object
toArray(T[] t)  返回一个包含所有对象的指定类型的数组
toArray(),toArray(T[] t)算是比较重要的一个方法,下面是集合转换为数组的一个示例代码
public static void main(String[] args) {
    String a = "a",b="b",c="c";
    List<String> list = new ArrayList<String>();
    list.add(a);
    list.add(b);
    list.add(c);
    String[] s = list.toArray(new String[0]);
    for(String str : s){
        System.out.println(str);
    }
}
再来一个数组转集合的
public static void main(String[] args) {
    String[] str = {"hello","world","hi","java"};
    List list = Arrays.asList(str);
    System.out.println(list);
    System.out.println(list.size());
}

collection集合的四种基本形态

  1. List 关注数据的索引列表
  2. Set 关注数据的唯一性
  3. Queue 关注数据被处理的执行顺序
  4. Map 关注数据的映射关系

集合的关系图示

图片来自 http://www.cnblogs.com/xiaoqv/archive/2011/11/24/2262142.html


List

List关注点在索引,与其它集合类型相比,List特有的就是一些和索引相关的方法:get(int index) 、 add(int index,Object o) 、 indexOf(Object o) 。

  • ArrayList 可理解为一个可动态增长的数组,提供快速迭代和快速随机访问的能力。
  • LinkedList 其中的数据结构为双向链表结构,当需要快速插入和删除时LinkedList成为List中的不二选择。
ArrayList和LinkedList差异性
  • 随机访问如get和set,ArrayList较优,因为LinkedList要移动指针;对于remove和add,LinkedList比较占优势,因为ArrayList需要移动数据。
  • ArrayList本身是无序的,可通过Collections.sort(new ArrayList())排序;LinkedList本身有序

Set

Set集合关心唯一性,它不允许重复

  • HashSet 当不希望元素重复,但是不关心元素之间的顺序时使用此类
  • TreeSet 当不希望元素重复,但是希望按照元素的自然顺序进行排序时可以使用此类。

Queue(队列,先进先出)

用于保存将要执行的任务列表

  • LinkedList 实现了Queue接口,可以实现先进先出的队列。
  • PriorityQueue 用来创建自然排序的优先级队列。

Map

Map以Key-Value的键值对存放数据,关注键值对的映射关系

  • HashMap 需要以键值对存储,又不关心顺序时使用
  • TreeMap 需要以键值对存储,关心元素的自然顺序
  • LinkedHashMap 需要以键值对存储,关心元素的插入顺序时使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值