泛型

1、泛型:确定集合中只能存放某一种数据类型对象。//<String>

2、泛型的好处:

          1.将运行时的错误提前到编译时。

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

3、自定义泛型:自定义泛型就是一个数据类型的占位或一个数据类型变量,一般TE来做这儿占位符号

    格式:<占位符> T :定义了一个泛型

        Public static 数据类型

        Egpublic static <T>T text(T s){

        

               Rerurn s ;    

           }

如果你传进去的是基本数据类型:接受的时候已改用它的包装来来接受

   Egint ---->Integer;

       Short =--->Short;

       Double---->Doblie

       Float0------>Float

       Byte------>Byte

       Boolean---->Boolean

       Long----->Long

       Char----->Charactor

4、使用注意点:

     1.泛型方法中自定一个泛型数据的类型是在在实际参数传递被确定的

     2.泛型所用的标识符需要符合标识符的命名规范,一般习惯用大写字母表示

 

5、自定义数组的工具类

      定义一个泛型类

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

      使用注意点:

          1.泛型类上自定义的自定义泛型的类型是在创建这个对象时确定的

          2.如果一个定义泛型的类,在创建对象时没有指定,默认为object类型。

          3.静态方法是不能够使用类上自定义的泛型,必须在方法上定义一个泛型

6、泛型接口的定义方式:

       Interface 接口名<声明自定义的泛型>{ }

       使用注意点:

           1.接口上自定义的泛型在实现该接口的时候被指定的

           2.如果实现接口是没有指定接口,那么就会默认为object

           需要在创建接口实现类对象是指定数据类型,那么需要格式:

          class  类名 <声明自定义泛型> implements 接口<声明自定义泛型>

7、判断下面泛型写法是否正确

ArrayList<string> list1 = new ArrayList<string>();    true

ArrayList<string> list2 = new ArrayList<Integer>();    false

ArrayList<Integer> list3 = new ArrayList<string>();    false

//jdk1.5有的

ArrayList list4 = new ArrayList<string>();    true

ArrayList<string> list5 = new ArrayList();    true

 

8、map 集合 接口 双列集合

   特点:存储数据是以键和值的方式,键不允许重复,值是允许重复的。

   ----->HashMap

   ----->TreeMap

   ----->HashTable

   Map中常用的方法:

      添加:put(K key, V value)

            PutAll(Map<? Extends K,? Extends V>m)

      删除:clear()

            Remove(object key)

      获取:get(object key)

            Size()

      判断:isEmpty()

            containsKey(object key)

            containsValue(object value)

9、map集合的使用注意点:

      1.键可以是任意对象,值也可以是任意对象

      2.Map集合中是可以嵌套存listMap)集合

10、HashMap:底层给予哈希表

存储原理也使用哈希表来存放的:

     HashMap添加了元素,首先会调用键的HashCode方法获得一个哈希值,然后经过运算获取一个位置。

     情况一,如果位置上没有元素,那么直接将该元素存放在此位置。

     情况二,如果位置上有了元素,那么还会调用元素equals方法与这个位置的元素做比较,如果返回回来的true,那么就被视为相同的键,就不存,如果返回回来时是false,那么就可以存该元素。

11、TreeMap

     给予二叉树的结构存储。特点:以键来做自然排序

     使用注意点:

        1.TreeMap添加的元素时,如果元素的键具备自然排序功能,那么久会通过自然排序对元素进行排序。

        2.TreeMap添加的元素时,如果不具备自然排序特性,键所属的类必须要实现Comparable接口。把这个键的比较规则定义在Comparable方法中

        3.TreeMap添加的元素时,如果不具备自然排序特性,也没有实现Comparable接口,创建TreeMap的时候给他一个比较器结构:

            Class 类名 implements Comparable 接口{

 

           }

           键的比较规则定义在Comparable方法中。

12、HashTable HashMap一样的使用,线程安全,访问比较慢

13、Map集合的遍历方式:

     迭代器来遍历

     ①entrySet();

       Eg:特点 : 通过遍历键 ,通过键来取值

Set<String> set = map.keySet();  

Iterator<String> it = set.iterator();

while(it.hasNext()){

 

String key = it.next();

System.out.println(""+key +":"+map.get(key));

}

 

     ②keySet();

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

Collection<String> coll = map.values();

//创建一个迭代器

Iterator<String> it = coll.iterator();

while(it.hasNext()){

 

System.out.println(":"+it.next());

 

}

 

     ③values();

      Egmap集合的遍历方式三:entrySet();

Set<Map.Entry<String, String>> entrys = map.entrySet();

//获取迭代器

Iterator<Map.Entry<String, String>> it = entrys.iterator();

while(it.hasNext()){

Map.Entry<String, String> entry = it.next();

//需求将小达达换成老王

String key = entry.getKey();

if(("付建华").equals(key)){

entry.setValue("老王");

}

System.out.println(":"+entry.getKey() + " :"+entry.getValue());

}

14、Collection:接口

Collections:集合的工具类  Arrays(数组的工具类)只能操作list集合

15、CollectionCollections的区别?

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

 

Collections常用方法:

1.list进行二分查找:

          前提该集合一定要有序。

int binarySearch(list,key);

//必须根据元素自然顺序对列表进行升级排序

//要求list 集合中的元素都是Comparable 的子类。

int binarySearch(list,key,Comparator);

2,对list集合进行排序。

sort(list);

//list进行排序,其实使用的事list容器中的对象的compareTo方法

sort(list,comaprator);

//按照指定比较器进行排序

3,对集合取最大值或者最小值。

max(Collection)

max(Collection,comparator)

min(Collection)

min(Collection,comparator)

4,对list集合进行反转。

reverse(list);

5,对比较方式进行强行逆转。

Comparator reverseOrder();

Comparator reverseOrder(Comparator);

6,对list集合中的元素进行位置的置换。

swap(list,x,y);

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

replaceAll(list,old,new);

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

Set synchronizedSet(Set<T> s)

Map synchronizedMap(Map<K,V> m)

List synchronizedList(List<T> list)

9. 如果想要将集合变数组:

可以使用Collection 中的toArray 方法。注意:是Collection不是Collections工具类

传入指定的类型数组即可,该数组的长度最好为集合的size

posted on 2016-12-05 17:29  辛仔  阅读(124)  评论(0)    收藏  举报

导航