面向对象高级5

1.时间

基础知识:时间原点:1970-1-1 0点0秒,世界标准时间,我们国家处于东八区,1970-1-1 8点0分0秒

1.1Date

包:java.util

构造: Data(); 代表当前系统时间

Data(long 毫秒值) 代表指定时间,从1970-1-1 8:0:0 距离的毫秒值

功能:long getTime(); 获取里面内置的毫秒值

void setTime(long 毫秒值) 修改毫秒值

2.SimpleDateFormat

作用:用来实现Date和String之间的距离

包:java.text

看构造:

SimpleDateFormat(String format):

  • yyyy-MM-dd HH:mm:ss
  • yyyy年MM月dd日 HH:mm:ss

功能:

  • Date --->String  String format(Date date) 将指定的Date转成指定的字符串
  • String --->Date  Date parse(String source) 要求你的字符串和模式需要匹配才行,否则报ParseException

2.集合

对比数组:

  1. 集合的长度可以改变,动态扩容
  2. 只能存储引用数据类型,不能存储基本数据类型

2.1Collection接口

A:List(接口)

  • ArrayList 
  • LinkedList

B:Set(接口)

  • HashSet
  • TreeSet
  • 特点:没有元素索引

Collection的公共方法

1.boolean add(E e); 添加元素
2.boolean remove(Object obj);注意:在使用迭代器的时候,不能使用集合的方法对集合进行增删操作否则会报java.util.ConcurrentModificationException
3.boolean contains(Object obj);判断集合中是否包含某个元素
4.int size(); 求集合中的元素
void removeIf(Predicate<E> pre); 发现接口只有一个抽象方法,可以匿名内部类,使用lambda
void clear();清空集合,让集合的长度变为0;
boolean isEmpty();判断集合是否长度为0

Iterator<E> iterator() 

迭代器的方法

1.boolean hasNext(); 判断是否有元素
2.E.next();取出元素
3.E remove(); 删除迭代器指针对应的元素
使用迭代器遍历的时候,只能使用该方法删除,不能使用集合的方法,因为使用集合的方法,可能出现隔过去的情况,迭代器的remove方法底层有指针回退。

示例:

//2.借助迭代器遍历集合
        Iterator<String> it = coll.iterator();
        //3.借助迭代器的方法, 遍历集合
        while (it.hasNext()){
            String next = it.next();
            System.out.println(next);
        }

所有实现迭代器接口都可以使用增强for

for(元素的数据类型 变量名: 集合|数组) {

        变量名

}

注意事项:底层采用的迭代器,不能使用集合的方法进行增删,只能查看或者元素的内容,因为看不到迭代器对象

2.2List

特点:

  1. 有序, 存储顺序和取出的顺序    1,5,6  ----> 1,5,6
  2. 可以存储重复元素
  3. 有索引

特有的方法

void add(int index, E e); 在指定位置上添加元素,原来的以及以后的要顺延一位
E remove(int index); 删除指定索引的元素,删除完后,后面的索引的元素会往前顺延
E set(int index, E newE); 将指定位置的元素修改为newE,返回老元素
E get(int index); 根据索引获取元素   可以用遍历集合(普通for)

注意:一旦牵扯到索引就要注意索引越界

2.3Set

特点:

  1. 大部分无序  存储的顺序和取出的顺序不一定一致
  2. 不可以重复(去重)
  3. 没有索引
  4. 所有的功能都是从Collection中继承下来的,没有任何的特有方法

实现类TreeSet

1.可以对元素进行排序

2.结论:如果存储的自定义类型,必须指定排序规则才可以

  • 自然排序  让自定义类实现Comparable接口,重写compareTo方法, 在里面定义排序规则, 其中this代表当前正在添加的元素, o代表是集合中元素
  • 比较器排序  在创建TreeSet的时候传入比较器,  Comparator, 重写里面的 compare(o1, o2), 其中o1代表正在添加的元素, o2代表集合中元素
  • 在TheeSet中比较器的优先级更高一点, 因为底层优先判断是否有比较器, 如果有按照比较器的规则来;排, 如果没有比较器, 才会走有类里面的compareTo方法比较!!!!

3.去重标准 只和比较的值是否为0有关系,为0则认为重复,不为0认为不重复

4.缺点:相同内容的,可能比较的值为0, 这样现实生活中可能跟这个需求有违背,  set集合没有索引操作起来很不方便!!!!

5.开发过程中,真的要实现去重以及排序,还是建议使用ArrayList集合

6.原理: 特点:增删满,查询快

底层基于树形结构

红黑树:满足自己的红黑规则则不需要旋转

 

 

 2.4Collections(Arrays)

  • static void sort(List<T> list)   自然排序, 要求自定义类和Comparable有关系
  • static <T> void sort(List<T> list, Comparator<T> c)   比较器排序规则

3.finally

特点:保证一段代码一定会走, 哪怕方法结束了

作用:经常用于释放资源

格式(前提: 不能单独使用):  

try{
}finally{
}

try{
}catch(Exception e){
}finally{
}

4.数据结构

作用: 规定了数据的存储的机构

类型:

  1. 栈:   先进后出  我们现实中使用较少!!!不是很常见   栈内存就是基于栈结构, 每当新的方法被调用, 新的方法执行完后, 老的才会执行
  2. 队列:先进先出  在我们现实中用的而很多了
  3. 数组:查询快, 增删慢  连续的空间, 0索引旁边一定是1索引的元素  ArrayList
  4. 链表:查询慢,增删块   查询慢, 因为已知都是头节点或者尾节点, 要么从头查, 要么从尾, 所以很慢;增删快:不用牵一发动全身, 只需要断开两个节点的关系即可。散列结构, 底层是通过记录地址的方式链接起来。如:LinkedList  特有方法 一对操作首尾的操作!!!!!!
  5. 红黑树结构
  6. 哈希表结构

5.补充:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值