Java中List、Set集合及Map的使用代碼如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
package tingjizifu; import java.util.*; public class TongJi { /* * 使用Scanner從控制臺讀取一個字符串,統計字符串中每個字符出現的次數,要求使用學習過的知識完成以上要求 * 實現思路根據Set、List、Map集合的特性完成。 */ public static void main(String[] args) { // 輸入字符串 Scanner input = new Scanner(System.in); String shuRu = input.next(); // 把字符串字符裝入List集合 List<String> list = new ArrayList<String>(); for ( int i = 0 ; i < shuRu.length(); i++) { list.add(String.valueOf(shuRu.charAt(i))); } // 把字符串字符裝入Set集合 Set<String> set = new HashSet<String>(); for ( int i = 0 ; i < shuRu.length(); i++) { set.add(String.valueOf(shuRu.charAt(i))); } // 用Set中的字符與List中的字符進行比較,相同就加1進行計數, // 然后把Set集合中的字符作為鍵(key),統計的數作為值(value),最后打印出Map中的數據 Map<String, Integer> map = new HashMap<String, Integer>(); for (String str : set) { int sum = 0 ; // System.out.println(str); for ( int i = 0 ; i < list.size(); i++) { if (list.get(i).equals(str)) { sum++; } } map.put(str, sum); } Set<String> ss = map.keySet(); for (String str : ss) { System.out.println(str + "出現次數為" + map.get(str) + "次" ); } input.close(); } } |
下面看下set map list的區別
都是集合接口
set --其中的值不允許重復,無序的數據結構
list --其中的值允許重復,因為其為有序的數據結構
map--成對的數據結構,健值必須具有唯一性(鍵不能同,否則值替換)
List 按對象進入的順序保存對象,不做排序或編輯操作。
Set對每個對象只接受一次,并使用自己內部的排序方法(通常,你只關心某個元素是否屬于Set,而不關心它的順序--否則應該使用List)。
Map同樣對每個元素保存一份,但這是基于"鍵"的,Map也有內置的排序,因而不關心元素添加的順序。如果添加元素的順序對你很重要,應該使用 LinkedHashSet或者LinkedHashMap.
Collection 是對象集合, Collection 有兩個子接口 List 和 Set
List 可以通過下標 (1,2..) 來取得值,值可以重復
而 Set 只能通過游標來取值,并且值是不能重復的
ArrayList , Vector , LinkedList 是 List 的實現類
ArrayList 是線程不安全的, Vector 是線程安全的,這兩個類底層都是由數組實現的
LinkedList 是線程不安全的,底層是由鏈表實現的
Map 是鍵值對集合
HashTable 和 HashMap 是 Map 的實現類
HashTable 是線程安全的,不能存儲 null 值
HashMap 不是線程安全的,可以存儲 null 值
以上所述是小編給大家介紹的關于Java中List、Set集合及Map的使用知識,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:http://www.cnblogs.com/liuqingzi/archive/2016/08/05/5740816.html