zoukankan      html  css  js  c++  java
  • 基础笔记8(二)(容器-引用类型的排序)

    1.类库中比较对象的大小实现了comparable接口的compateTo().

       已经实现了的如:integer,date,String(比较是每个字符的unicode编码大小,字符一样比较长度)

    2.比较对象的两种方法:collections类提供的

    1.public static <T extends Comparable<? super T>> void sort(List<T> list) {}
    比较的对象实现
    Comparable接口的comrateTo()比较方法,

    2.
    public static <T> void sort(List<T> list, Comparator<? super T> c) {}
    另外编写两个对象的比较方法实现comparator接口的compate(),独立于比较的对象。

      Collections提供排序算法。

    3.hashSet,treeSet对于集合自定义元素需要重写hashcode和equals方法以区别对象相等去重复。

    4.有序的集合和map:TreeSet TreeMap  

    4.1对于Tree容器是在添加元素时进行了排序,元素内容修改时候不会进行排序,并且可以修改产生相同数据。

    构建TreeSet的集合的元素需要实现comparable接口,或者构建时候提供实现comparator接口的比较器。
    
    构建TreeMap容器key也要已经实现接口,或者提供比较器(TreeSet其实也一种填充了value的TreeMap)

    5.Collections的常用方法:

    shuffle(List<?> list) 洗牌:随机打乱顺序

    reverse(List<?> list)  反序

    addAll(Collection<? super T> c, T... elements) 

    swap(List<?> list, int i, int j) 交换数据

    6.队列:Queue Deque

    单向队列接口(queue):只能一端操作,一般是前进先出,优先级队列,堆栈队列(后进先出)

    (前者方法出错抛出异常;后者返回布尔值)

    添加元素:add(E e) ;offer(E e) ;

    获取元素:element() ;peek();

    删除元素:remove(); poll();

    双向队列接口(Deque):可两端操作

    添加第一个元素addFirst(E e) push(E e); offerFirst(E e);

    获取第一个元素getFirst() element()     ; peek() peekFirst();

    删除第一个元素remove() removeFirst(); poll() pollFirest();

    addLast(E e) add(E e); offer(E e) offerLast(E e)

    getLast()                  ; peekLast()

    removeLast()            ; pollLast()

    7。Enumeration接口类似迭代器(1.5之前的)。

    8.vector 线程安全的数组,貌似没用过。

    9。hashtable 线程安全,父类是dictionary,键值不能为null(应该做同步的需要把 )

         hashMpa非线程安全,父类是abstractMap,键可以为一个是null,值无所谓。

    10.property 属于Map的实现类用于读写配置,键值都是value

    常用方法

    getProperty(String key)

    getProperty(String key,String default):读取不到值,用默认值代替。

    .property .xml 存放格式

    10.1加载配置的几种方式和路径(相对和绝对路径(略))

    11引用的的几种类型 :(简单纪录一下)

    强引用(StrongReference):gc不会回收的

    软引用(softReference):gc可能会被回收

    弱引用(weakReference):gc时会被回收

    虚引用(phantomReference):类似无引用,用于跟踪对象的回收状态和referenceQueue联合使用

    (对象加入弱引用中运行gc()对象被回收(如new String("会回收");常量池中的却不会回收(String s="不会回收");

    12,扩展的容器工具包有google的guava 和apache的commons_Collections

    git:代码管理软件获取guava的源码

    hugechm工具软件(将html文档转换为chm格式,适合转换api文档)

    总结:

    13.容器的三个重点:

    迭代器:高效的遍历,增强for (实现iterator接口)

    比较器:比较方法实现comparator 或者 对象实现comparable接口 

    有序的集合和键值treeSet和treeMap

    泛型:类 接口 方法 通配符 ? super extends 

    14.hashSet需要重写hashcode 和equals来区分重复对象

  • 相关阅读:
    luogu4345 [SHOI2015]超能粒子炮·改(组合数/Lucas定理)
    关于 centos 7系统,iptables透明网桥实现
    C 语言实现字符串替换
    linux 程序调用system执行命令
    linux C/C++ 日志打印函数
    关于socket编程获取客户端地址笔记
    C# treeview 使用笔记
    SIP DB33标准笔记 监控图像获取
    SIP DB33标准笔记 注册/目录发送/心跳
    contos 7/redhat 7 安装mysql
  • 原文地址:https://www.cnblogs.com/straybirds/p/6181769.html
Copyright © 2011-2022 走看看