配色: 字号:
《Java面向对象程序设计》10 Java集合写字字帖
2023-05-25 | 阅:  转:  |  分享 
  
目标从数组出发了解集合的概念掌握和灵活应用集合:Set、List和Map 概述Java数组在创建时必须指定数组的长度,数组一旦创建,其长度
就不能被改变在许多应用场合,数组的数目是不固定的。JDK类库提供了Java集合来解决这个问题所有Java集合类都位于java.ut
il包中Java集合主要分为以下3种类型:Set(集)List(列表)Map(映射) 概述Java集合框架中的接口 Coll
ectionSet ListSortedSetMapSortedMapCollection和Iterator接口在Collecti
on接口中声明了适合Java集合(只包括Set和List)的通用方法 Collection和Iterator接口Iterator接
口隐藏底层集合的数据结构,提供遍历各种类型的集合的统一接口Set(集)Set是最简单一种集合,集合的对象不按特定的方式排列,并且没
有重复对象 Set接口主要有两个实现类 :HashSetTreeSetHashSetHashSet类按照哈希算法来存取集合中的对象
,具有很好的存取和查找性能//往集合中加入了两个元素Set set = new HashSet();String s1= new
String("Hello");String s2= new String("World");set.add(s1);set.ad
d(s2);System.out.println(set.size());//往集合中加入了一个元素Set set = new H
ashSet();String s1= new String(“Hello”);String s2= new String(“He
llo”);set.add(s1);set.add(s2);System.out.println(set.size());Hash
Set遍历集合中的元素 Iterator it = set.iterator(); //取得Iterator对象
while (it.hasNext()) { //遍历集合中所有元素 Object
element = it.next(); //取出集合中一个元素 System.out.println(eleme
nt); }}TreeSetTreeSet类实现了SortedSet接口,能够对集合中的对象进行排序 Set set = n
ew TreeSet();set.add(new Integer(8));set.add(new Integer(7));set.
add(new Integer(6));set.add(new Integer(9));Iterator it = set.ite
rator();while (it.hasNext()) { System.out.print(it.next() + "
");}TreeSetTreeSet类支持两种排序方式:自然排序(默认方式)和客户化排序使用自然排序时,集合中的元素必须实现了Co
mpareble接口 ,TreeSet调用对象的compareTo()方法对元素进行排序JDK类库中有一部分类实现了Compara
ble接口,如:Integer、Double和String等TreeSetTreeSet中添加自定义类的对象,则必须实现Compa
rable接口class Student implements Comparerable { privat
e int id; //学号 private String name; 姓名 …… //实现接口方法,指定按
学号排序 public int compareTo(Object o) { Student s = (St
udent)o; if (id < s.getId()) return -1; if (id > s.
getId()) return 1; return 0; }}Set set = new TreeSet ()
;set.add(new Student(3,"Tom"));set.add(new Student(1,"Eddie"));se
t.add(new Student(4,"Jane"));set.add(new Student(2,"Mike"));Itera
tor it = set.iterator();while (it.hasNext()) { Student s =(Stude
nt) it.next(); System.out.println(s.getId()+ " " +s.getName());
}List(列表)List的主要特征是其元素以线性方式存储,集合中允许存放重复对象 List接口主要的实现类包括:ArrayLis
t 代表长度可变的数组。允许对元素进行快速的随机访问 LinkedList 采用链表数据结构。对顺序访问进行优化 访问列表
的元素List中的对象按照索引位置排列,可以按照索引位置来检索对象List list=new ArrayList();list.a
dd(new Integer(3));list.add(new Integer(4));list.add(new Integer(
3));list.add(new Integer(2));for (int i=0; i System.out.print( list.get(i) + " " );访问列表的元素List的iterator()方法也能
返回Iterator对象,可以用Iterator来遍历集合中所有对象 Iterator it = list.iterator();
while (it.hasNext()) { System.out.println(it.next());}为列表排序Col
lections类是Java集合类库中的辅助类,它提供了操纵集合的各种静态方法,其中sort() 方法用于对List中的对象进行排
序 List list = new ArrayList();list.add(new Integer(3));list.add(n
ew Integer(4));list.add(new Integer(2));Collections.sort(list);fo
r (int i=0; i + " " );该sort方法要求集合中的元素实现了Comparable接口Map(映射)Map是一种把键对象进行映射的集合,它的
每一个元素都包含一对键对象和值对象Map的主要实现类HashMap 使用哈希算法存取元素TreeMap 实现SortedMap
接口,能自动排序Map(映射)加入元素的方法 put(Object key, Object value)检索与键对象对应的值对
象 get(Object key)Map map = new HashMap();map.put("1", "Monday");m
ap.put("2", "Tuesday");map.put("3", "Wendsday");String day = (Str
ing)map.get("2");System.out.println(day);Map(映射)Map中的键对象不允许重复,值对象
可以重复 Map map = new HashMap(); map.put("1", "Monday"); map.put("on
e", " Monday");Map(映射)Tree Map实现了SortedMap接口,能对键对象进行排序 Map map =
new TreeMap ();map.put("4", "Thursday");map.put("1", "Monday");ma
p.put("3", "Wendsday");map.put("2", "Tuesday");Set keys = map.key
Set(); //keySet方法返回所有键对象的 Set集合Iterator it = keys.iterator();whi
le (it.hasNext()) { String key = (String)it.next(); String value
= (String)map.get(key); //根据键对象获取值对象 System.out.println(key + "
" +value);}总结Collection: 集合层次中的根接口,JDK没有提供这个接口直接的实现类Set: 不能包含
重复的元素,实现类有HashSet。实现了SortedSet这个按照升序排列元素的Set,实现类还有有TreeSetList: 是一个有序的集合,可以包含重复的元素。提供了按索引访问的方式。实现类有ArrayList和LinkedListMap: 包含了key-value对。key不能重复,value可重复,实现类有HashMap。SortedMap是一个按照升序排列key的Map,实现类有TreeMap集合对象的主要操作有: 增加元素,删除元素,对元素排序,访问(遍历)元素等
献花(0)
+1
(本文系大高老师首藏)