---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
Collection 集合
|__List: 元素有序,可重复,该集合体系有索引,凡是可以操作角标的都是该体系特有方法
|__Set 元素无需,不可重复,该集合体系没有索引
List:
|__ArrayList:查询速度快,线程不同步,底层用的是数组接口,增删较慢,判断元素是否存在重复只依赖equals方法
|__LinkedList:增删速度快,底层用的是链表结构,查询慢
|__Vector: 已被ArrayList取代,枚举是Vector特有的取出方式,枚举和迭代功能一样,名称过长被迭代器取代
增: add(index,element)
addAll(index,collection)
删:
remove(index)
改:
set(index,element)
查:
get(index)
subList(from,to) //从from到to位置,不包括to
listIterator() //List集合特有迭代器,ListIterator是Iterator的子接口
在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生异常,所以迭代时们只能用迭代器的方法操作元素,可是Iterator方法有限
如果想要其他的操作,需要使用它的子接口:ListIterator,而该接口只能通过List集合的ListIterator()方法获取
ListIterator:
hasNext() /xx.Next() //是否有下一个元素 | 下一个元素
hasPrevious xx.Previous() | 上一个元素
SET:元素无序,存入和取出顺序不一定一致
|__HashSet 底层数据结构是哈希表
|__TreeSet 二叉树判断元素是否相同是以返回值是否为0,大于则返回正数,小于则返回负数
字符串本身就具备比较性,但是它的比较方式却不是需要的
HashSet,保证元素的唯一性,对判断元素是否存在,以及删除等动作是通过元素的两个方法 hashCode和equals完成
如果元素的哈希值相同才判断equlas是否为true,如果哈希值不同,不调用equals
TreeSet:可以对Set集合的元素进行排序,排序时,当主要条件相同则一定要判断次要条件,底层数据结构是二叉树
保证程序元素唯一性的依据是 compareTo方法返回0
排序:
1:让元素自身具备比较性,元素要实现comparable接口,覆盖compareTo方法,这种方式称为元素自然排序,默认顺序
2:元素自身不具备比较性或具备的比较性是不被需要的时候,需要让集合自身具备比较性,定义比较器,将比较器作为参数传递给TreeSet集合的构造函数
两种排序都存在是,以比较器为主,定义一个类,实现Comparator接口,覆盖compare方法
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------