zoukankan      html  css  js  c++  java
  • 线程,集合,泛型

       

    线程的停止 :

          1.停止一个线程 一般是通过一个变量来控制

          2.如果需要停止一个处于一个等待状态的线程,那么需要配合interrupture方法来完成。

     join方法  加入  : 可以在一个线程执行中,加入另外一个线程执行,前面的线程会等待加入的线程执行完毕后再执行。

     

     wait() : 等待    需要等其他线程调用notify()来唤醒

                    线程会放到线程池中进行等待。

              notify() : 唤醒  随机唤醒线程池中的一个线程

              notifyAll():唤醒所有等待线程。

       

    1. 泛型:jdk1.5新特性, 用来确定集合只能存放某一种数据类型对象

    2. 好处: ①.将运行时的错误提前到编译时;

                         ②.避免无谓的强制类型转换。

    自定义方法泛型

    自定义泛型就是一个数据类型的占位或一个数据类型变量,一般是T和E来做这个占位符,占位符号是可以随意写,必须要遵守标识符的命名规范。(T和E可换成任何的,一般是一个大写的任意字母。)

      

    方法泛型的格式: public <泛型的声明> 返回值类型  函数名( 泛型 变量名 ){ }

             String s = test(“a”);

    public static <T>T(这里的T是返回值) test(T s){

    // 函数中运用不确定类型,那么就可以使用泛型

                    return s;

    }

    使用注意点:

    1. 泛型方法中自定义一个泛型数据的类型是在实际参数传递时被确定
    2. 泛型所用的标识符需要符合标识符的命名规范,一般习惯用大写字母表示

    定义泛型类

             定义格式:  class 类名<声明自定义的泛型>{ }

     

    使用注意点:1.泛型类上定义的泛型的类型是在创建这个类对象时确定;

                                2.如果一个自定义泛型类,在创建对象时没有指定类型,默认是Object类型;

                                3.静态方法不能够使用类上自定义的泛型,必须在方法上再声明自定义。

    定义泛型接口

        定义方式: interface 接口名<声明自定义的泛型>{ }

    使用注意点:1.接口上自定义的泛型是在实现该接口的时候被指定的;

                2.如果实现接口时没有指定类型,那么默认为Object类型

                3.需要在创建接口实现类对象时指定类型,那么需要格式

    --------定义------

    Map 集合接口双列集合 K:V  类似OC的字典

    特点:数据存储通过键值对方式,键不允许重复,值是允许重复

    常用方法

    添加---- >   put(键, 值)

                map.put(“1002”,new MyBook(“java”,100));

              putAll(Map<? Extends K,? extends V> m)

                Map map2 = new HashMap();

                map.putAll(map2); //将map2的元素添加到map中

    删除---- >   clear()    清空所有元素    

               remove(Object o)  通过指定的键删除元素

    获取---- >   get(Object key)  用键取值

               size()           获取元素的个数

    判断---- >   isEmpty()        判断map集合是否为空

               containsKey()    判断是否包含此键key

               containsValue(Object value)    判断集合是否包含该value值

     

    使用注意点: 1.键可以是任意对象,值也可以是任意对象

    2.Map集合中时可以嵌套list(Map)集合

    Map遍历元素

    方式一:keySet();  Set试图  ---> 获取所有的键用Set集合来保存 (遍历键,取值)

    Set<键类型> set = map.keySet();  //map集合的key转为set集合

    Iterator<> iterator = set.iterator();  // 获取set集合迭代器

    while(iterator.hasNext()){         // 判断是否有元素

            String key = iterator.next();  // 获取key

            map.get(key);  // 取value

    }

    方式二:values();  获取Map集合中所有的值,用Collection集合来保存

    Collection<value类型> coll = map.values();  //value转为collectin集合

        Iterator<value类型> it = coll.iterator();  //创建Collection迭代器

        While(it.hasNext()){     // 判断是否有元素

    it.next();(返回一个value)   //获取value值,并且指针指向下一个

    } //结果无序,要想有序可以先把键(set取键),先排序,然后取出东西就有序

    方式三:entrySet();

    //通过entrySet获取类型为Map.Entry<>的泛型

    Set<Map.Entry<key类型,value类型>> entry = map.entrySet();

    //创建Map.Entry<>泛型迭代器

        Iterator<Map.Entry<key类型,value类型>> it = entry.iterator();

        While(it.hasNext()){     //判断是否有元素

            // 取每个 Map.Entry<>泛型的 对象

    Collections              

    Collection: 接口

    Collections: 集合的工具类   和Arrays(数组工具类)一样

     

    Collection和Collections 的区别?

    Collection是一个单列集合的根接口,Collections是操作集合的工具类

    Collections常用方法:

    1.对list进行二分法查找:(前提集合必须有序)

    int binarySeach(list,key);    // 必须根据元素自然排序对列表进行升级排序

    int binarySearch(list,key,Comparator); //要求list集合元素都是Comparable子类

      2.对list集合进行排序

         sort(list); //对list进行排序,使用的是list容器中对象的compareTo方法

         sort(list,compartor);  //按照指定比较器进行排序

      3.对集合取最大值或最小值

         max(Collection)

         max(Collection,compartor)

         min(Collection)

         min(Collection,compartor)

      4.对list集合进行反转

         reverse(list);   [1,2,3]---->[3,2,1]

      5.对比较方式进行强行逆转

         Comparator reverseOrder(); //把自然排序,逆变成反着排序的,(返回比较器)

         Comparator reverseOrder(Comparator); (指定一个比较器)返回一个比较器

      6.对list集合中的元素进行位置的替换

         swap(list,x,y);

    7.对list集合进行元素的替换,如果被替换的元素不存在,那么原集合不变

         replaceAll(list,old,new) // 对某个list的值,换个新值

      8.可以将不同步的集合变成同步的集合

         Set synchronizedMap(Set<T> s)

         Map synchronizedMap(Map<k,v> m)

         List synchronizedList(List<T> list)

      9.集合变数组

         可以使用Collection 中的toArray方法。

    注意:是Collection不是Collectins工具类,传入指定的类型数组,该数组的长度最好为集合的size.

  • 相关阅读:
    ZOJ 3735 Cake(区间DP,最优三角剖分)
    POJ 1185 炮兵阵地 (状态压缩DP)
    POJ 3415 Common Substrings (后缀数组,长度不小于k的公共子串的个数)
    NSNumberFormatter 千分符
    遭遇String.getBytes()
    HDFS数据的Checksum
    hadoop mapreduce作业流程概论
    HDFS 安全模式
    hadoop的dfs.replication
    hadoop升级
  • 原文地址:https://www.cnblogs.com/Xu-songsong/p/6134767.html
Copyright © 2011-2022 走看看