一、Java中的集合类:是一种工具类,就像容器。储存任意数量的具有共同属性的对象
1、集合的作用:在类的内部,对数据进行组织;
简单而快速的搜索大数量的条目;
有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素;
有的集合接口,提供了映射关系,可通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型。
2、与数组对比:(1)数组长度固定,集合长度可变;
(2)数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象。
3、Java集合框架体系结构
Collection:List(序列)——ArrayList(数组序列)、LinkedList(链表)
Queue(队列)——LinkedList(链表)
Set(集)——HashSet(哈希集)
Map:HashMap <Key,Value> Entry(键值对)
Collection和Map是java集合框架中的两个根接口。
List和Queue存储的元素是排列有序并可重复的,Set中的元素是无序不可重复的。
每一个Collection类中存储的是一个一个的对象;Map内部存储的是键值对。
二、Collection接口&List接口简介
Collection接口:是List、Set和Queue接口的父接口
定义了可用于操作List、Set和Queue的方法——增删改查
List接口以及其实现类——ArrayList:
List是元素有序并且可以重复的集合,被称为序列;
List可以精确的控制每个元素的位置,或删除某个位置元素;
ArrayList——数组序列,是List的一个重要实现类;
ArrayList底层是由数组实现的。
Set接口以及其实现类——HashSet:
Set是元素无序并且不可以重复的集合,被称为集;
HashSet——哈希集,是Set的一个重要实现类。
四、、泛型
对象存入集合都变成Object类型,取出时需要类型转换。例:
Course temp = (Course)CoursesToSelect.get(0);
集合中的元素,可以是任意类型的对象(对象的引用),如果把某个对象放入集合,则会忽略他的类型,而把他当作Object处理。
泛型则是规定了某个集合只可以存放特定类型的对象,会在编译期间进行类型检查,可以直接按指定类型获取集合元素。不能是基本类型,必须是引用类型。
例如:public List<Course> couorses;
带有泛型——Course的List类型属性。
List<Course> courses = new ArrayList<course>();
五、Map和HashMap
1、Map接口:提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value。
键(key值)不可重复,value值可以。
Map支持泛型,如Map<K,V>
2、HashMap类
Map的实现类,其中的Entry对象是无序排列的;
key值和value值均可为null,但一个HashMap只能有一个key值为null的映射。
六、List的contains方法、Set的contains方法
调用contains(obj)方法,其实就是相当于遍历List中的每一个元素,然后再调用每个元素的equals(obj)方法,去跟contains(obj)方法中的参数进行比较。
在Object中定义了equals(Object obj)方法和hashCode()方法,当调用HashSet的contains(obj)方法时,其实是先调用每个元素的hashCode()方法来返回哈希码,如果哈希码的值相等的情况下,再调用equals(obj)方法判断是否相等。
七、
indexof()方法
lastIndexOf()方法
Collection.sort()方法——排序
排列顺序:数字:0—9
大写字母:A-Z
小写字母:a-z
Comparable接口——默认比较规则
——compareTo()方法
Comparator接口——临时比较规则
——compare()方法