1、2019/4/24,Java 常用类讲解2,IBM Learning & Development,2,Java 常用类讲解2,2019/4/24,Agenda,List接口和ArrayList类 Map接口和HashMap类 Properties类,3,Java 常用类讲解2,2019/4/24,Objective,熟练掌握List的使用及遍历 熟练掌握Map的使用及遍历 熟练掌握Properties的读取和保存,4,Java 常用类讲解2,2019/4/24,Java 2简化集合类框架图,5,Java 常用类讲解2,2019/4/24,java.util.List接口,此接口的用户可以对列表
2、中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。,6,Java 常用类讲解2,2019/4/24,java.util.List常用方法,add() (E o) 向列表的尾部追加指定的元素(object 类型) get(int index) 返回列表中指定位置的元素。 size() 返回列表中的元素数。 isEmpty() 判断列表是否为空 iterator() 返回以正确顺序在列表的元素上进行迭代的迭代器 remove(int index)移除此列表中指定位置上的元素。 remove(Object o)从列表中移除指定元素的单个实例
3、(如果存在),7,Java 常用类讲解2,2019/4/24,java.util.List接口的实现类,ArrayList和Vector 实现了List 接口,相当于大小可变数组 。 因为实现同一接口,故方法一样 区别 ArrayList线程不同步,效率更高 Vector线程同步,更安全,8,Java 常用类讲解2,2019/4/24,数据的添加,List list = new ArrayList (); / 也可以为List list = new Vector(); for (int i = 0; i 10; i+)Employee e = new Employee(); list.add
4、( e ); ,9,Java 常用类讲解2,2019/4/24,数据的取得1,for (int i = 0; i list.size(); i+) Employee e = (Employee ) list.get(i); ,10,Java 常用类讲解2,2019/4/24,Practice 1,测试List 先创建一个类Person,内有属性name, age, country 创建出若干Person对象,并给出不同属性 创建ArrayList对象 判断List对象是否为空 放入刚才新建所有Person对象 打印出List的大小 打印出List中第一个元素的所有属性 打印出List中所有元素
5、的所有属性,11,Java 常用类讲解2,2019/4/24,java.util.ListIterator接口,List.listIterator()返回ListIterator 接口 ListIterator接口的方法 : hasNext() 测试是否还有元素。 next() 返回列表中的下一个元素。,12,Java 常用类讲解2,2019/4/24,数据的取得2,ListIterator liter = list.listIterator ();while (liter.hasNext ()Employee e = (Employee) liter.next();,13,Java 常用类讲
6、解2,2019/4/24,Practice 2,测试List 先创建一个类Person,内有属性name, age, country 创建出若干Person对象,并给出不同属性 创建ArrayList对象 放入刚才新建所有Person对象 调用ListIterator遍历打印出List中所有元素的所有属性,14,Java 常用类讲解2,2019/4/24,java.util.Map接口,将键映射到值的对象。 也就是说可以用键来访问列表中的数据。 实现Map接口的常用类有HashMap, Hashtable。 区别 HashMap线程不安全,效率更高 HashTable线程安全,安全性更高注意:
7、一个map对象不能保存两个相同的键每个键最多和一个值对应,15,Java 常用类讲解2,2019/4/24,java.util.Map接口的方法,put(K key, V value) 把一个对象放进列表中 get(Object key) 返回指定键所对应的对象。 containsKey(Object key)如果此映射包含指定键的映射关系,则返回 true。 remove(Object key) 删除指定键对应的对象 values()返回映射中所有值的视图集Collection,16,Java 常用类讲解2,2019/4/24,HashMap数据的添加,Map m = new HashMap
8、 (); Employee e = new Employee (); m.put (“abc123“, e); 其中键值“abc123”是自己定义的一个关键字。 如果列表中已经有了这个键的对象,将会被覆盖。,17,Java 常用类讲解2,2019/4/24,HashMap数据的取得,Employee e = (Employee) m. get (“abc123“);,18,Java 常用类讲解2,2019/4/24,HashMap的遍历,Iterator iter = m.entrySet().iterator (); while (iter.hasNext () Map.Entry me =
9、 (Map.Entry)iter.next ();e = (Employee) me.getValue ();System.out.println (e.toString (); ,19,Java 常用类讲解2,2019/4/24,Practice 3,测试HashMap 先创建一个类Person,内有属性name, age, country 创建出若干Person对象,并给出不同属性其中一个对象name为“张三” 创建HashMap对象 放入刚才新建所有Person对象做为value并以person的name属性做为key 查找是否有“张三”的对象,并请打印出其所有属性 遍历整个Map 删除
10、“张三”对象,20,Java 常用类讲解2,2019/4/24,java.util.Hashtable类,此类实现一个哈希表,除了可以像 HashMap那样用put(),get()方法来访问列表的各个元素外,还实现了Enumeration接口 。,21,Java 常用类讲解2,2019/4/24,Hashtable数据的添加,Hashtable ht = new Hashtable(); Employee e = new Employee (); ht.put (“one”, e);,22,Java 常用类讲解2,2019/4/24,Hashtable数据的取得,Employee e = (E
11、mployee) ht. get (“one”); if (e != null) System.out.println(“ one = ” + e.toString(); ,23,Java 常用类讲解2,2019/4/24,java.util.Enumeration接口,Hashtable. elements()返回Enumeration接口 Enumeration接口的方法 : hasMoreElements() 测试此枚举是否包含更多的元素。 nextElement() 返回此枚举的下一个元素。,24,Java 常用类讲解2,2019/4/24,Hashtable的遍历,Enumerati
12、on enum = ht.keys (); while (enum.hasMoreElements () String ssn = (String) enum.nextElement ();e = (Employee) ht.get (ssn);System.out.println (ssn + “ “ + e.getName () ); ,25,Java 常用类讲解2,2019/4/24,Practice 4,测试HashTable的遍历 先创建一个类Person,内有属性name, age, country 创建出若干Person对象,并给出不同属性其中一个对象name为“张三” 创建Ha
13、shTable对象 放入刚才新建所有Person对象做为value并以person的name属性做为key 遍历整个HashTable,26,Java 常用类讲解2,2019/4/24,Properties对象,在程序运行中,经常会遇到需要加载一些动态数据的情况。 这个时候,就会在一个配置文件里面写入配置好的键值对 键值对的格式是= 例:,27,Java 常用类讲解2,2019/4/24,Properties常用方法,load(InputStream inStream) 从输入流中读取属性列表(键和元素对 ) getProperty(String key) 用指定的键在此属性列表中搜索属性。
14、setProperty(String key, String value) 设置属性列表中指定键为指定值 store(OutputStream out, String comments) 将属性列表保存,28,Java 常用类讲解2,2019/4/24,Practice 5,练习使用Properties 创建一个文本文件,里面写入键值对 startDate=2009-1-1 password=123456 保存至硬盘 使用Properties对象载入该文件 打印出startDate和password相应的值 改写password值 并添加一个新值new_property 将所有数据保存回properties文件,29,Java 常用类讲解2,2019/4/24,Homework 1,从Properties文件中读取一组Person对象信息(姓名,年龄,日期) 从控制台输入一组Person对象信息 从一个文本文件中读取一组Person对象信息(如下) 张三 20 1988-3-7 将三组Person信息存入Map对象,以姓名为key,Person对象为value存入 最后将所有信息打印出来,30,Java 常用类讲解2,2019/4/24,Q & A,31,Java 常用类讲解2,2019/4/24,谢谢!,