Step By Step(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         else
115             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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值