首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java 聚合篇

2012-10-23 
Java 集合篇1.??? Java集合类库中最重要的两个接口CollectionE和MapK,V,其中Collection接口又再次划分

Java 集合篇

1.??? Java集合类库中最重要的两个接口Collection<E>和Map<K,V>,其中Collection接口又再次划分为List和Set两大子接口,List中可以包含重复的元素,Set中则不可以。以下列举出一些常用的集合实现类,他们均分别继承自这两个接口:
??? 1)??? ArrayList: 一种可以动态增长和缩减的索引序列(动态数组,类似于C++中的vector);
??? 2)??? LinkedList: 一种可以在任何位置进行高效的插入和删除操作的有序序列(类似于C++中list);
??? 3)??? ArrayDeque: 一种用循环数组实现的双端队列(类似于C++中的deque);
??? 4)??? HastSet:一种没有重复元素的无序集合(C++的标准库中并未提供hashset集合,但是Windows的VC和Linux平台下的gcc均各自提供了hashset容器);
??? 5)??? TreeSet: 一种有序集(类似于C++中的set);
??? 6)??? EnumSet: 一种包含枚举类型值的集;
??? 7)??? LinkedHashSet: 一种可以记住元素插入次序的集,在其内部由LinkedList负责维护插入的次序,HashSet来维护Hash;
??? 8)??? HashMap:一种存储键值对关联的数据结构(C++的标准库中并未提供hashmap集合,但是Windows的VC和Linux平台下的gcc均各自提供了hashmap容器);
??? 9)??? TreeMap:一种键值有序排列的映射表(类似于C++中的map);
??? 10)?? EnumMap:一种键值属于枚举类型的映射表;
??? 11)?? LinkedHashMap:一种可以记住键值项插入次序的映射表;
??? 2.??? ArrayList:该集合的底层是通过动态数组来实现的,集合构造的时候可以指定一个初始容量,当插入的元素过多导致已有的容量不能容纳新元素是,其底层数组的容量将自动增长原有容量的1.5 倍,这样会带来一定的空间浪费,但是为了避免经常扩张而带来的性能开销,只能是用空间换取时间了。如果在容器的中间添加或者删除一个元素都将会导致后面的元素向后或向前移动一个位置,如果元素数量较多且该操作比较频繁,将会导致系统的性能降低,然而对于容器中元素的随机访问性能较好,以下为ArrayList的常用示例代码:

1     public static void showIterator() {  2         ArrayList<String> list = new ArrayList<String>();  3         list.add("Monday");  4         list.add("Tuesdag");  5         list.add("Wednesday");  6         Iterator<String> iterator = null;  7         iterator = list.iterator();  8         //while  9         while (iterator.hasNext()) { 10             String element = iterator.next(); 11             System.out.println(element); 12         } 13         //for 14         for (iterator = list.iterator(); iterator.hasNext();) { 15             String element = iterator.next(); 16             System.out.println(element); 17         } 18         //for each 19         for (String element : list) { 20             System.out.println(element); 21         } 22     } 23  24     public static void showSetAndGet() { 25         ArrayList<String> nums = new ArrayList<String>(); 26         nums.clear(); 27         nums.add("One"); 28         nums.add("Two"); 29         nums.add("Three"); 30         System.out.println(nums); 31         nums.set(0, "Uno"); 32         nums.set(1, "Dos"); 33         nums.set(2, "Tres"); 34         for (int i = 0; i < nums.size(); ++i) 35             System.out.println(nums.get(i)); 36     } 37      38     public static void showRemoveAndSize() { 39         ArrayList<String> al = new ArrayList<String>(); 40         System.out.println("Initial size of al: " + al.size()); 41         al.add("C"); 42         al.add("A"); 43         al.add("E"); 44         al.add("B"); 45         al.add(1, "A2"); 46         System.out.println("Size of al after additions: " + al.size()); 47         System.out.println("Contents of al: " + al); 48         al.remove("F"); 49         al.remove(2); 50         System.out.println("Size of al after deletions: " + al.size()); 51         System.out.println("Contents of al: " + al); 52         Iterator<String> it = al.iterator(); 53         //Notes:remove() must be called after next() 54         it.next(); 55         it.remove(); 56         System.out.println("Size of al after deletions: " + al.size()); 57         System.out.println("Contents of al: " + al);         58     } 59      60     public static void showSubListAndCopyToArray() { 61         ArrayList<String> arrayList = new ArrayList<String>(); 62         arrayList.add("1"); 63         arrayList.add("2"); 64         arrayList.add("3"); 65         arrayList.add("4"); 66         arrayList.add("5"); 67         List<String> lst = arrayList.subList(1, 3); 68         for (int i = 0; i < lst.size(); i++) 69             System.out.println(lst.get(i));         70         // remove one element from sub list 71         String obj = lst.remove(0); 72         System.out.println(obj + " is removed"); 73         for (String str: arrayList) 74             System.out.println(str); 75         //get object array with normal method 76         Object[] objArray = arrayList.toArray(); 77         for (Object obj1 : objArray) 78             System.out.println(obj1); 79         //get object array with generic method 80         String[] strArray = arrayList.toArray(new String[0]); 81         for (String str : strArray) 82             System.out.println(str);  83     } 84      85     public static void showListIterator() { 86         ArrayList<String> aList = new ArrayList<String>(); 87         aList.add("1"); 88         aList.add("2"); 89         aList.add("3"); 90         aList.add("4"); 91         aList.add("5"); 92          93         ListIterator<String> listIterator = aList.listIterator(); 94         while (listIterator.hasNext()) { 95             System.out.println(listIterator.next()); 96             System.out.println("Previous: " + listIterator.previousIndex()); 97             System.out.println("Next: " + listIterator.nextIndex()); 98         } 99         while (listIterator.hasPrevious()) {100             System.out.println(listIterator.previous());101             System.out.println("Previous: " + listIterator.previousIndex());102             System.out.println("Next: " + listIterator.nextIndex());103         }104         listIterator = aList.listIterator(2);105         listIterator.next();106         listIterator.set("100");107         listIterator.next();108         listIterator.remove();109         for (String str : aList)110             System.out.println(str);111 112         if (aList.contains("4"))113             System.out.println("True");114         else115             System.out.println("False");116     }117     118     public static void showFillAndReplace() {119         ArrayList<String> arrayList = new ArrayList<String>();120         arrayList.add("A");121         arrayList.add("B");122         arrayList.add("A");123         arrayList.add("C");124         arrayList.add("D");125         Collections.replaceAll(arrayList, "A", "Replace All");126         System.out.println(arrayList);127         Collections.fill(arrayList, "REPLACED");128         System.out.println(arrayList);129     }130 131     public static void showCollectionOperation() {132         List<String> colours = new ArrayList<String>();133         colours.add("red");134         colours.add("green");135         colours.add("blue");136 137         System.out.println(colours);138         Collections.swap(colours, 0, 2);139         System.out.println(colours);140 141         Collections.reverse(colours);142         System.out.println(colours);143 144         Collections.sort(colours);145         System.out.println(Arrays.toString(colours.toArray()));146         Collections.sort(colours, Collections.reverseOrder());147         System.out.println(Arrays.toString(colours.toArray()));148 149         int index = Collections.binarySearch(colours, "green");150         System.out.println("Element found at : " + index);151         ArrayList<Integer> arrayList = new ArrayList<Integer>();152         arrayList.add(new Integer("3"));153         arrayList.add(new Integer("1"));154         arrayList.add(new Integer("8"));155         arrayList.add(new Integer("3"));156         arrayList.add(new Integer("5"));157         System.out.println(Collections.min(arrayList));158         System.out.println(Collections.max(arrayList));159     }160     161     public static void showMinMax() {162         ArrayList<Integer> arrayList = new ArrayList<Integer>();163         arrayList.add(new Integer("3"));164         arrayList.add(new Integer("1"));165         arrayList.add(new Integer("8"));166         arrayList.add(new Integer("3"));167         arrayList.add(new Integer("5"));168         System.out.println(Collections.min(arrayList));169         System.out.println(Collections.max(arrayList));170     }171     172     public static void showSynchronizedList() {173         ArrayList arrayList = new ArrayList();174         List list = Collections.synchronizedList(arrayList);175         //list之后的并发操作将不再需要synchronized关键字来进行同步了。176     }转自:http://www.cnblogs.com/stephen-liu74/archive/2011/08/26/2155082.html

热点排行