❶ java哪些集合類是線程安全的
在集合框架中,有些類是線程安全的,這些都是jdk1.1中的出現的。在jdk1.2之後,就出現許許多多非線程安全的類。 下面是這些線程安全的同步的類:
vector:就比arraylist多了個同步化機制(線程安全),因為效率較低,現在已經不太建議使用。在web應用中,特別是前台頁面,往往效率(頁面響應速度)是優先考慮的。
statck:堆棧類,先進後出
hashtable:就比hashmap多了個線程安全
enumeration:枚舉,相當於迭代器
除了這些之外,其他的都是非線程安全的類和介面。
線程安全的類其方法是同步的,每次只能一個訪問。是重量級對象,效率較低。
其他:
1. hashtable跟hashmap的區別
hashtable是線程安全的,即hashtable的方法都提供了同步機制;hashmap不是線程安全的,即不提供同步機制 ;hashtable不允許插入空值,hashmap允許!
❷ Java編程:你所知道的集合類都有哪些主要方法
看API啊,我主要用到的是list arrayList map hashmap
❸ Java的集合對象都有哪些
List: 有順序的,元素可以重復遍歷:for�0�2 迭代排序:Comparable Comparator�0�2�0�2 Collections.sort()ArrayList:底層用數組實現的List特點:查詢效率高,增刪效率低�0�2 輕量級 線程不安全LinkedList:底層用雙向循環鏈表 實現的List特點:查詢效率低,增刪效率高Vector: 底層用數組實現List介面的另一個類特點:重量級,占據更多的系統開銷 線程安全 Set:無順序的,元素不可重復(值不相同)遍歷:迭代排序:SortedSetHashSet:採用哈希演算法來實現Set介面唯一性保證:重復對象equals方法返回為true重復對象hashCode方法返回相同的整數不同對象 哈希碼 盡量保證不同(提高效率) SortedSet:對一個Set排序TreeSet:在元素添加的同時,進行排序。也要給出排序規則唯一性保證:根據排序規則,compareTo方法返回為0,就可以認定兩個對象中有一個是重復對象。 Map:元素是鍵值對 key:唯一,不可重復 value:可重復遍歷:先迭代遍歷key的集合,再根據key得到valueHashMap:輕量級�0�2 線程不安全�0�2 允許key或者value是nullHashtable:重量級 線程安全 不允許key或者value是nullProperties:Hashtable的子類,key和value都是String SortedMap:元素自動對key排序TreeMap: 集合是指一個對象可以容納了多個對象(不是引用),這個集合對象主要用來管理維護一系列相似的對象。
❹ java集合類
排名次你自己搞定吧——30分只值這么多。
/*
一個班15個人,每個學生都有學號,姓名,英語成績,語文成績,數學成績。
要求:
1)每個人的成績在40到100分以內。學號從1開始排列,姓名隨意
2)將學生保存到Map集合中,按照KEY-->學號 VALUE--->學生
3)將全班的學生按三科總成績排名顯示出所有學生信息
*/
import java.util.*;
public class SaveStudentBai {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Map <int,FifteenStudent> fifMap = new HashMap <int,FifteenStudent> ();
FifteenStudent[] fifArray = new FifteenStudent[15];
for(int i=0;i<15;i++) {
// System.out.println("Enter ID!");
// int id = sc.nextInt();
//既然學號從1開始排列,那麼就這樣吧。少寫一個算一個,本人比較懶。o(╯□╰)o
int id = i+1;
System.out.println("Enter Name!");
String name = sc.next();
System.out.println("Enter English Score!");
int engScore = sc.nextInt();
System.out.println("Enter Chinese Score!");
int chiScore = sc.nextInt();
System.out.println("Enter Math Score!");
int matScore = sc.nextInt();
fifArray[i] = new FifteenStudent(id, name, engScore, chiScore, matScore);
fifMap.put(id,fifArray[i]);
}
}
}
class FifteenStudent {
int id;
String name;
int engScore;
int chiScore;
int matScore;
public FifteenStudent(int id,String name,int engScore,int chiScore,int matScore) {
this.id = id;
this.name = name;
this.engScore = engScore;
this.chiScore = chiScore;
this.matScore = matScore;
}
}
❺ java中的集合有幾種
集合類是放在java.util.*;這個包里。集合類存放的都是對象的引用,而非對象本身,為了說起來方便些,我們稱集合中的對象就是指集合中對象的引用(reference)。引用的概念大家不會忘了吧,在前邊我們講數據類型時講的。
集合類型主要有3種:set(集)、list(列表)、map(映射)和Queue(隊列)。//隊列為jdk5中的加上的
(1) Set
集(set)是最簡單的一種集合,它的對象不按特定方式排序,只是簡單的把對象加入集合中,就像往口袋裡放東西。對集中成員的訪問和操作是通過集中對象的引用進行的,所以集中不能有重復對象。我們知道數學上的集合也是Set這個,集合裡面一定是沒有重復的元素的。
(2)List
列表(List)的主要特徵是其對象以線性方式存儲,沒有特定順序,只有一個開頭和一個結尾,當然,它與根本沒有順序的Set是不同的。它是鏈表嘛,一條鏈肯定有順序這個順序就不一定了。
(3)Map
映射(Map),這個在java里不是地圖的意思,其實地圖也是映射哈。它裡面的東西是鍵-值對(key-value)出現的,鍵值對是什麼呢?舉個例子,比如我們查字典,用部首查字法。目錄那個字就是鍵,這個字的解釋就是值。鍵和值成對出現。這樣說可以理解吧。這也是很常用的數據結構哦。
(4)Queue
在jdk5.0以前,通常的實現方式是使用java.util.List集合來模仿Queue。Queue的概念通過把對象添加(稱為enqueuing的操作)到List的尾部(即Queue的後部)並通過從List的頭部(即Queue的前部)提取對象而從 List中移除(稱為dequeuing的操作)來模擬。你需要執行先進先出的動作時可以直接使用Queue介面就可以了。
這4個東西,有時候功能還不太完善,需要有些子類繼承它的特性。Set的子介面有TreeSet,SortedSet,List的有ArrayList等,Map里有HashMap,HashTable等,Queue裡面有BlockingQueue等。我們來看看例子吧:
實踐: Set舉例
import java.util.*;
public class SetExample {
public static void main(String[] args) {
Set set = new HashSet(); //HashSet是Set的子介面
set.add("one");
set.add("second");
set.add("3rd");
set.add(new Integer(4));
set.add(new Float( 5.0F ));
set.add("second");
set.add(new Integer(4));
System.out.println(set);
}}
List舉例:
import java.util.*;
public class ListExample {
public static void main(String[] args) {
List list = new ArrayList();
list.add("one");
list.add("second");
list.add("3rd");
list.add(new Integer(4));
list.add(new Float( 5.0F ));
list.add("second");
list.add(new Integer(4));
System.out.println(list);
}}
Map舉例
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.io.FileReader;
public class MapExample {
public static void main(String[] args) throws java.io.FileNotFoundException {
Map word_count_map = new HashMap();
FileReader reader = new FileReader(args[0]);
Iterator words = new WordStreamIterator(reader);
while ( words.hasNext() ) {
String word = (String) words.next();
String word_lowercase = word.toLowerCase();
Integer frequency = (Integer)word_count_map.get(word_lowercase);
if ( frequency == null ) {
frequency = new Integer(1);
} else {
int value = frequency.intValue();
frequency = new Integer(value + 1);}
word_count_map.put(word_lowercase, frequency);
}
System.out.println(word_count_map);
}}
Queue舉例:
import java.io.IOException;
import java.io.PrintStream;
import java.util.LinkedList;
import java.util.Queue;
public class QueueTester {
public Queue<String> q; //發現了一個奇怪的語法,這個尖括弧是泛型聲明
public QueueTester() {q = new LinkedList<String>();}
public void testFIFO(PrintStream out) throws IOException {
q.add("First");
q.add("Second");
q.add("Third");
Object o;
while ((o = q.poll()) != null) {
out.println(o);}}
public static void main(String[] args) {
QueueTester tester = new QueueTester();
try { tester.testFIFO(System.out);
} catch (IOException e) {
e.printStackTrace(); } }}
❻ java集合類,,,
java幾何類一般是四種,map集合,list集合,set集合,properity集合,常用的是map和list,map是鍵值對類型的集合,list是類似於數組類型的集合,按你的意思可以使用map集合類,學生信息可以看成是一個自定義類型 map<string,object> mp=new map<string,object>();
❼ java集合有哪些
Java集合類存放在java.util包中,是一個用來存放對象的容器。
注意:
1.集合只能存放對象。比如你存入一個int型數據66放入集合中,其實它是自動轉換成Integer類後存入的,Java中每一種基本數據類型都有對應的引用類型。
2.集合存放的都是對象的引用,而非對象本身。所以我們稱集合中的對象就是集合中對象的引用。對象本身還是放在堆內存中。
3.集合可以存放不同類型,不限數量的數據類型。
一、List集合:(有序,元素可以重復)
1、ArrayList集合:
1)底層數據結構是數組,查找快,增刪慢。
2)線程不安全,效率高
2、Vector集合:
1) 底層數據結構是數組,查詢快,增刪慢
2)線程安全,效率低
3、LinkedList集合:
1) 底層數據結構是鏈表,查詢慢,增刪快
2)線程不安全,效率高
二、Set集合(元素不可重復,元素唯一)
1、Hashset集合:
1) 底層數據結構是哈希表,哈希表依賴兩個方法hascode ()和equals()方法
2)兩個方法的執行順序:
首先判斷hascode()值是否相同
是:繼續執行equals()方法,看其返回值
是true:說明元素重復,不添加
是false:就直接添加元素
否:就直接添加到集合
2、Treeset集合:
1)底層數據結構是二叉樹
❽ java的集合類都有哪些,主要方法
:查API文檔埃方法都差不多 存值取值 Set用迭代取值,List可以用迭代也可以用get(下標值),因為List是有順序的,Set沒有順序。Set的add()方法返回一個boolean值,因為不能重復嘛,重復放東西就返回false。Map要特殊一點,用put放東西。
❾ java中的幾個集合類
list
map
set三個都是介面
map
映射表,
一個key只能對應一個value(它的反命題,一個value只對應一個key不成立)
最常用的有:
map
l---
hashmap
(key可以null)
l---
hashtable
(key不能為null)
l---properties
(適合讀取.properties格式的文件)
l---
sortedmap(interface根據key排序)
l---treemap(用二叉樹實現key排序)
list
和
set
都是線性的,主要區別是list裡面存放的內容可以重復,而set同一對象只保留唯一的一個。因此,map裡面,提取key集合的返回類型是set,而提取value集合的類型是collection(list/set)的父類型。
常用的有
list
l---linkedlist(鏈表)
l---arraylist(動態數組,所有方法不同步)
l---vector(動態數組,所有方法同步)
l---stack(可以實現lifo的棧)
❿ 怎麼才能了解JAVA集合類集合類是什麼
數組是集合的一種,是集合的一個子集,你理解了數組就理解了集合.
理解集合類
集合類存放於java.util包中。
集合類存放的都是對象的引用,而非對象本身,出於表達上的便利,我們稱集合中的對象就是指集合中對象的引用(reference)。
集合類型主要有3種:set(集)、list(列表)和map(映射)。
(1)集
集(set)是最簡單的一種集合,它的對象不按特定方式排序,只是簡單的把對象加入集合中,就像往口袋裡放東西。
對集中成員的訪問和操作是通過集中對象的引用進行的,所以集中不能有重復對象。
集也有多種變體,可以實現排序等功能,如TreeSet,它把對象添加到集中的操作將變為按照某種比較規則將其插入到有序的對象序列中。它實現的是SortedSet介面,也就是加入了對象比較的方法。通過對集中的對象迭代,我們可以得到一個升序的對象集合。
(2)列表
列表的主要特徵是其對象以線性方式存儲,沒有特定順序,只有一個開頭和一個結尾,當然,它與根本沒有順序的集是不同的。
列表在數據結構中分別表現為:數組和向量、鏈表、堆棧、隊列。
關於實現列表的集合類,是我們日常工作中經常用到的,將在後邊的筆記詳細介紹。
(3)映射
映射與集或列表有明顯區別,映射中每個項都是成對的。映射中存儲的每個對象都有一個相關的關鍵字(Key)對象,關鍵字決定了對象在映射中的存儲位置,檢索對象時必須提供相應的關鍵字,就像在字典中查單詞一樣。關鍵字應該是唯一的。
關鍵字本身並不能決定對象的存儲位置,它需要對過一種散列(hashing)技術來處理,產生一個被稱作散列碼(hash code)的整數值,散列碼通常用作一個偏置量,該偏置量是相對於分配給映射的內存區域起始位置的,由此確定關鍵字/對象對的存儲位置。理想情況下,散列處理應該產生給定范圍內均勻分布的值,而且每個關鍵字應得到不同的散列碼。
集合類簡介
java.util中共有13個類可用於管理集合對象,它們支持集、列表或映射等集合,以下是這些類的簡單介紹
集:
HashSet: 使用HashMap的一個集的實現。雖然集定義成無序,但必須存在某種方法能相當高效地找到一個對象。使用一個HashMap對象實現集的存儲和檢索操作是在固定時間內實現的.
TreeSet: 在集中以升序對對象排序的集的實現。這意味著從一個TreeSet對象獲得第一個迭代器將按升序提供對象。TreeSet類使用了一個TreeMap.
列表:
Vector: 實現一個類似數組一樣的表,自動增加容量來容納你所需的元素。使用下標存儲和檢索對象就象在一個標準的數組中一樣。你也可以用一個迭代器從一個Vector中檢索對象。Vector是唯一的同步容器類??當兩個或多個線程同時訪問時也是性能良好的。
Stack: 這個類從Vector派生而來,並且增加了方法實現棧??一種後進先出的存儲結構。
LinkedList: 實現一個鏈表。由這個類定義的鏈表也可以像棧或隊列一樣被使用。
ArrayList: 實現一個數組,它的規模可變並且能像鏈表一樣被訪問。它提供的功能類似Vector類但不同步。
映射:
HashTable: 實現一個映象,所有的鍵必須非空。為了能高效的工作,定義鍵的類必須實現hashcode()方法和equal()方法。這個類是前面java實現的一個繼承,並且通常能在實現映象的其他類中更好的使用。
HashMap: 實現一個映象,允許存儲空對象,而且允許鍵是空(由於鍵必須是唯一的,當然只能有一個)。
WeakHashMap: 實現這樣一個映象:通常如果一個鍵對一個對象而言不再被引用,鍵/對象對將被舍棄。這與HashMap形成對照,映象中的鍵維持鍵/對象對的生命周期,盡管使用映象的程序不再有對鍵的引用,並且因此不能檢索對象。
TreeMap: 實現這樣一個映象,對象是按鍵升序排列的。
Set和List都是由公共介面Collection擴展而來,所以它們都可以使用一個類型為Collection的變數來引用。這就意味著任何列表或集構成的集合都可以用這種方式引用,只有映射類除外(但也不是完全排除在外,因為可以從映射獲得一個列表。)所以說,把一個列表或集傳遞給方法的標准途徑是使用Collection類型的參數