Java中的集合类-详解 (4)

LinkedHashMap,是HashMap的子类,与LinkedList一样,它也使用双向链表来维护内部元素的关系,使Map元素迭代的顺序与存入的顺序一致,案例:

import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; public class c6_19 { public static void main(String[] args) { Map map=new LinkedHashMap(); map.put("1", "Jack"); map.put("2", "Rose"); map.put("3", "Lucy"); Set keySet=map.keySet(); Iterator it=keySet.iterator(); while(it.hasNext()) { Object key=it.next(); Object value=map.get(key);//获取每个键对应的值 System.out.println(key+":"+value); } } } Properties集合

Map接口中还有一个实现类Hashtable,它和hashMap十分相似,区别在于Hashtable线程是安全的,它有一个子类十分重要,那就是Properties
Properties主要用于存储字符串类型的键和值,在实际开发中,经常使用Properties集合来存取应用的配置项,案例:

import java.util.Enumeration; import java.util.Properties; public class c6_20 { public static void main(String[] args) { Properties p=new Properties(); //创建Properties对象 p.setProperty("Background-color", "red"); p.setProperty("Font-size", "14px"); p.setProperty("Language", "zh-hans"); Enumeration names=p.propertyNames(); while(names.hasMoreElements()) { //遍历循环所有的键 String key=(String)names.nextElement(); String value=p.getProperty(key); //获取键对应的值 System.out.println(key+"="+value); } } } JDK5.0新特性——泛型

集合可以存储任何类型的对象,但是存入对象后,会“忘记”对象的类型,这个对象的编译类型就会自动编程Object类型,在强制转换类型时就会出错,案例:

import java.util.ArrayList; public class c6_22 { public static void main(String[] args) { ArrayList list=new ArrayList(); list.add("String"); list.add("Collection"); list.add(1); for(Object obj:list) { String str=(String) obj; } } }

运行后,就会报错:Exception in thread "main" java.lang.ClassCastException
list集合中存入了3个元素,分别是2个字符串,1个证书,取出时我们都将其强制转换为String类型,但是Integer对象无法转换为String类型,因此会报出上诉错误。为了解决该问题,Java中引入了“参数化类型”这个概念,即泛型。它可以限定方法操作的数据类型,在定义集合类时,使用<参数化类型>的方式指定该类中方法操作的数据类型,格式如下:
ArrayList<参数化类型> list=new ArrayList<参数化类型>();
那么上述案例相应代码改为:ArrayList<String> list=new ArrayList<String>();
修改过后的案例:

import java.lang.reflect.Array; import java.util.ArrayList; public class c6_22 { public static void main(String[] args) { ArrayList<String> list=new ArrayList<String>(); list.add("String"); list.add("Collection"); for(String str:list) { System.out.println(str); } } }

这样ArrayList这样的集合只能存储String类型的元素。

文章到此暂告一段落,博文还有一些不足,比如过长的代码应该弄一个折叠,影响读者的阅读体验,后续会再更新整理一下

参考

参考自《Java基础案例教程》一书
注:原创博文,禁止转载。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpgss.html