黑马程序员之java学习笔记9

来源:互联网 发布:软件界面错位 编辑:程序博客网 时间:2024/06/10 20:35

1SortedSet接口的实现类TreeSet.SortedSet中的.元素是有序的,元素按照自然顺序或是自己定义的比较器的顺序来排列的。

2.iterator接口:每个集合都会实现iterator接口,有自己的迭代器。具体实现如下:

   HashSet hs = new HashSet();

  // Iterator it = hs.iterator();

  // While(it.hasnext()){

  //  System.out.println(it.next());

//}

  For(integrator it= hs.iterator; it.hasnext()){

      System.out.println(it.next());

}

 

3.TreeSetadd方法报异常问题:当指定的元素无法和集合中存在的元素比较,就会报ClassCastException,元素添加不进集合。这是因为TreeSet中有默认的比较器,当元素之间无法进行比较大小,就会报错,所以一般情况下会重写comparator接口并实现compare方法,定义自己的比较器。

 

4.String类的public int compareTo(String s)方法,返回-1,0,1.当前字符串比

s小,返回-1;二者相等,就返回0;当前字符串比s大,返回1

 

5.Collections是一个类,而不是接口。Collections的静态方法ReverseOrder()返回一个Comparator对象。Colletions的静态方法Collections.sort(集合,comparator对象)Collections.shuffle(集合)返回一个乱序的集合。

使用Collections类可以简化TreeSet的操作,不必要再那么麻烦定义比较器,可以调用静态方法 ReverseOrder()直接返回一个Comparator对象。

6.hashMap类是Map接口的实现类,类中主要方法有,put(Object key, Object value),get(key)返回key对应的value值,keySet(),values();

7.Map中的key是不可以重复的,而values是可以重复的。当使用map中的put方法放置一键值对,其中的key是已存在keySet中,那么当前的键对应的value会覆盖之前的value

8.keySet()方法返回值为Set:是因为key不能重复,而set中的元素恰好也不能重复。

  Values()方法放回值为Collection:是因为map中的value是可以重复的,而Collection中的元素是可以重复的。

9.获取mapvalue值的途径:

 1)通过getKey)方法,逐一获取。

2)通过keySet()方法获取key集合,再使用迭代器,一次性获取。

3) 通过EntrySet()方法获取Entry集合,再使用迭代器获取。其中获取的类型是Map.Entry.

 

10.运行时配置参数:

  Eclipse中,右键类,选中run configurationàargumentsà输入参数并以空格分隔。如果参数本身带有空格,用双引号将该参数引起来。

 

11.内部类相当与外部类的一个属性。如:Map.Entry;Entry类就是Map类中的内部类。

 

12.TreeMapTreeSet相似,都是按自然顺序或是自己定义的比较器来排列元素的。

其中TreeMap比较的是key,TreeSet比较的是元素本身。.

 

15.策略模式:包含抽象策略类,具体策略类,环境类,客户端。抽象策略类一般用

一个接口或是抽象类来表示;具体策略类是一些实现了共同接口的类;环境类里面会保持着一个抽象策略类的引用和set方法,并在环境类中通过多态来操作具体策略类;客户端调用环境类来操作具体策略类中的方法。

 

16.HashSetHashMap底层实现:

1HashSet底层是用HashMap来实现的。当使用HashSetadd方法向HashSet添加元素时,底层实际是将该元素作为Mapkey值,value始终是同一个假的object对象,因为在set中根本用不到Mapvalue值。

2HashMap底层维护着一个Entry类型的数组,HashMap类中的元素是放置在这个数组中。

3)当向HashMapput一对键值时,底层会根据keyhashCode个方法计算出一个位置。该位置就是此对象准备添加的位置。如果该位置没有对象就可直接放在此位置,如果有对象,就顺着存在对象的链开始寻找,如果此链上有对象,就会使用equals方法进行比较,如果返回值是false,则将该对象放入数组中,再将之前那个对象链到此对象的后面。

 

17.重写hashCodeequals方法,其目的是检测add方法欲添加的对象能否添加进集合。

0 0