首頁  >  文章  >  Java  >  一段程式碼搞懂Java中List、Set集合及Map的使用

一段程式碼搞懂Java中List、Set集合及Map的使用

高洛峰
高洛峰原創
2017-01-22 15:18:021497瀏覽

Java中List、Set集合及Map的使用代碼如下所示:

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 -其中的值不允許重複,無序的資料結構集合介面

  set --其中的值不允許重複,無序的資料結構
  list   --其中的值允許重複,因為其為有序的資料結構 

  map-成對的資料結構,健值必須具有唯一性(鍵不能同,否則值替換) 


List 按物件進入的順序保存對象,不做排序或編輯操作。


Set對每個物件只接受一次,並使用自己內部的排序方法(通常,你只關心某個元素是否屬於Set,而不關心它的順序--否則應該使用List)。


Map同樣對每個元素保存一份,但這是基於"鍵"的,Map也有內建的排序,因為而不關心元素添加的順序。如果加入元素的順序對你很重要,應該使用LinkedHashSet或LinkedHashMap.


Collection 是物件集合, Collection 有兩個子介面List 和Set 


List 可以透過下標(1,2..) 來取得值,值可以重複


而Set 只能透過遊標來取值,且值是不能重複的


ArrayList , Vector , LinkedList 是List 的實作類別


的,這兩個類別底層都是由陣列實作的


 LinkedList 是執行緒不安全的,底層是由鍊錶實作的  

Map 是鍵值對集合

HashTable 和HashMap 是Map

Map 是鍵值對集合

HashTable 和HashMap 是Map 的實作類 

HashTable 是執行緒安全的,不能儲存null 值

HashMap 不是執行緒安全的,可以儲存null 值

以上所述是小編給大家介紹的關於Java中List、Set集合及Map的使用知識,希望對大家有幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對PHP中文網的支持! 🎜🎜更多一段程式碼搞懂關於Java中List、Set集合及Map的使用相關文章請關注PHP中文網! 🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn