黑马程序员_13集合框架

时间:2023-02-19 21:31:27

---------------------- 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()   //是否有下一个元素| 下一个元素

hasPreviousxx.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培训、期待与您交流! ----------------------