第13章 对象容器 Collection类 Map类
第13章 • 对象容器 – Collection类 – Map类
简介List界面 Lit界面是 javautil. Collection接口的子接口 Collection界面是」 java. lang Iterable子界面 package java. langi import java.util. Iterator public interface Iterable f Iterator iterator(i 在 Java se的AP中找不到任何实作 terator的类别 terator会根据实际的容器数据结构来迭代元素 而容器的数据结构实作方式对外界是隐藏的
简介List界面 • List界面是java.util.Collection接口的子接口 • Collection界面是java.lang.Iterable子界面 • 在Java SE的API中找不到任何实作Iterator的类别 – Iterator会根据实际的容器数据结构来迭代元素 – 而容器的数据结构实作方式对外界是隐藏的 package java.lang; import java.util.Iterator; public interface Iterable { Iterator iterator(); }
简介List界面 Collection界面继承了 iterator界面 package java. utili public interface Collection extends Iterable t int sizeof boolean isEmpty ()i boolean contains(object o)i Iterator iterator( T[] toArray(T[] a)i boolean add(e o) boolean remove(object o)i boolean containsAll(collection c)i boolean addAll(Collection c)i boolean removeAll( Collection c)i boolean retainAll(collection c) void clear()i boolean equals(object o)i int hashCode (
简介List界面 • Collection界面继承了Iterator界面 package java.util; public interface Collection extends Iterable { int size(); boolean isEmpty(); boolean contains(Object o); Iterator iterator(); T[] toArray(T[] a); boolean add(E o); boolean remove(Object o); boolean containsAll(Collection c); boolean addAll(Collection c); boolean removeAll(Collection c); boolean retainAll(Collection c); void clear(); boolean equals(Object o); int hashCode(); }
简介List界面 每个加人List中的元素是循序加入的’并可 指定索引来存取元素 package java.util public interface List extends Collection I boolean addAll(int index, Collectionc) e get(int index) E set(int index, E element)i void add(int index, E element)i E remove(int index) int indexof(object o)i int lastIndexof(object o)i List sublist(int fromIndex, int toIndex)i
简介List界面 • 每个加入List中的元素是循序加入的,并可 指定索引来存取元素 package java.util; public interface List extends Collection { .... boolean addAll(int index, Collection c); E get(int index); E set(int index, E element); void add(int index, E element); E remove(int index); int indexOf(Object o); int lastIndexOf(Object o); List subList(int fromIndex, int toIndex); .... }
简介List界面 Lit可以使用数组(Aray)或是链结串行 ( Linkedlist)来实作这个特性 对于循序加入与存取,使用 ArrayList的效率 比较好 对于经常变动元素排列顺序的需求,使用 Linkedlist会比较好
简介List界面 • List可以使用数组(Array)或是链结串行 (LinkedList)来实作这个特性 • 对于循序加入与存取,使用ArrayList的效率 比较好 • 对于经常变动元素排列顺序的需求,使用 LinkedList会比较好
ArrayList 使用数组结构实作List数据结构 可以使用索引来快速指定对象的位置 于快速的随机取得对象来说·使用 Array List 可以得到较好的效能 若要从中间作移除或插入对象的动作,会 需要搬动后段的数组元素以重新调整索弓 顺序,所以速度上就会慢的多
ArrayList • 使用数组结构实作List数据结构 • 可以使用索引来快速指定对象的位置 • 于快速的随机取得对象来说,使用ArrayList 可以得到较好的效能 • 若要从中间作移除或插入对象的动作,会 需要搬动后段的数组元素以重新调整索引 顺序,所以速度上就会慢的多
ArrayList Scannerscanner new scanner(System. in) List list new ArrayListo)i System.out. println("输入名称(使用quit结束)"); while(true) t System. out. print ("#")i string input scanner next()i if(input equals("quit ) break list. add(input)i System,out, print("显示输入:"); for(int 0; i< list size(); 1++) System. out. print (list. get (i)+") System. out. println ()i
ArrayList Scanner scanner = new Scanner(System.in); List list = new ArrayList(); System.out.println("输入名称(使用quit结束)"); while(true) { System.out.print("# "); String input = scanner.next(); if(input.equals("quit")) break; list.add(input); } System.out.print("显示输入: "); for(int i = 0; i < list.size(); i++) System.out.print(list.get(i) + " "); System.out.println();
ArrayList 如果您的目的是要循序取出容器中所有的 对象,则您可以使用 I Iterator Iterator iterator =list iterator( while(iterator hasNext( //还有下一个元素吗? //使用nex()取得下一个元素 System. out. print (iterator. next()+)i Iterator的实例是在 ArrayList中根据数组的 洁构而实作的,但您不用理会实作细节
ArrayList • 如果您的目的是要循序取出容器中所有的 对象,则您可以使用Iterator • Iterator的实例是在ArrayList中根据数组的 结构而实作的,但您不用理会实作细节 Iterator iterator = list.iterator(); while(iterator.hasNext()) { //还有下一个元素吗? //使用next()取得下一个元素 System.out.print(iterator.next() + " "); }
ArrayList 使用「增强的for循环」( Enhanced forloop)来直接漏访List的所有元素 //使用 foreach来福访List中的元素 for(string s list) t System. out. print(s +)i
ArrayList • 使用「增强的for循环」(Enhanced forloop)来直接遍访List的所有元素 //使用foreach来遍访List中的元素 for(String s : list) { System.out.print(s + " "); }
Linkedlist 如果经常从容器中作移除或插入对象的动 作,使用 Linkedlist会获得较好的效能 Linkedlist使用链结串行( Linkedlist)实作 了List界面 addFirsto丶 addlast()、 getFirst0 getlast(0、 remove first()、 removelast(0
LinkedList • 如果经常从容器中作移除或插入对象的动 作,使用LinkedList会获得较好的效能 • LinkedList使用链结串行(Linkedlist)实作 了List界面 • addFirst()、addLast()、getFirst()、 getLast()、removeFirst( )、removeLast() 等