集合

1.TreeSet

特點:採用紅黑樹結構算法,添加到TreeSet集合中的元素必須是可排序的

例:

import java.util.Iterator;
import java.util.TreeSet;
/**
 * @author wx
 * TreeSet 示例
 */
public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet ts=new TreeSet();
ts.add("zhangsan");
ts.add("lisi");
ts.add("wangwu");
ts.add("zhaouliu");
ts.add("");
Iterator it=ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}


2.List集合

特點:添加的元素允許重複而且有序。
   添加到List集合中的元素都會有一個整數類型的序號,來表示當前元素添加的順序(這個序號也就是元素的索引);
原理:

List集合底層實際上是通過一個動態的數組來保存數據的,數組可以根據集合中元素的個數,動態擴展或者縮小數組的容量。


實現類:
ArrayList
LinkedList;
Vector

ArrayList類:
ArrayList是使用數組結構實現的List集合
優點:
對於使用索引取出元素有較好的效率
它使用索引來快速定位對象
缺點:
元素做刪除或插入速度較慢
因爲使用了數組,需要移動後面的元素以調整索引順序。

LinkedList
LinkedList是使用雙向鏈表實現的集合。
LinkedList新增了一些插入、刪除的方法。
優點:
對頻繁的插入或刪除元素有較好的效率
適合實現棧(Stack)和隊列(Queue)

Vector:
和ArrayList操作基本一致,區別在於Vector是線程安全的,
ArrayList是線程不安全的,所以ArrayList查找數據的效率要

高於Vector。

例1:

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
/**
 * @author wx
 *
 */
public class Test2 {


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List list=new ArrayList();
list.add("zhangsan");
list.add(100);
list.add(true);
list.add("lisi");
list.add("lisi");
ListIterator it=list.listIterator();
while(it.hasNext()){
System.out.println(it.next());
}

for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}

例2:

import java.util.LinkedList;
/**
 * @author wx
 * LinkedList 示例
 */
public class Test3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedList list=new LinkedList();

list.add("張三");
list.add(100);
list.offer(200);
list.addLast("lisi");
list.addFirst("wangwu");

for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}

例3:

import java.util.Enumeration;
import java.util.Vector;
/**
 * @author wx
 *  Vector
 */
public class Test4 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Vector vc=new Vector();

vc.add("zhangsan");
vc.add("lisi");
System.out.println(vc.firstElement());

Enumeration en=vc.elements();
while(en.hasMoreElements()){
System.out.println(en.nextElement());
}
}
}

3.Map接口

Map接口的特點:
Map集合中是以鍵值對的形式存放數據的

Map集合中存放的鍵必須是唯一的,因爲在Map集合中鍵是通過
Set來存放。
Map集合中常用String作爲鍵.
實現類:
HashMap

LinkedHashMap

Hashtable--->Properties

TreeMap

HashMap:
檢索數據的效率非常高

在HashMap中允許null作爲鍵和值。

HashMap中輸出的數據沒有順序保證。

Hashtable和HashMap的區別:
Hashtable是線程安全的,而且在Hashtable中null不能作爲
鍵和值。

HashMap是線程不安全的,null可以作爲鍵和值


Properties屬性文件操作類
Properties 類表示了一個持久的屬性集。Properties 可保存在流中或從流中加載。屬性集中每個鍵及其對應值都是一個字符串
不建議使用 put 和 putAll 這類存放元素方法,應該使用 setProperty(String key,String value)方法,因爲存放的“鍵-值”對都是字符串。類似取值也應該使用getProperty(String key).
不支持泛型操作


例1:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
/**
 * @author wx
 * HashMap 示例
 */
public class Test5 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap hm=new HashMap();
hm.put("a", "zhangsan");
hm.put("b", "lisi");
hm.put("c", "wangwu");
hm.put(null, null);
System.out.println(hm);

Set set=hm.keySet();
Iterator it=set.iterator();
while(it.hasNext()){
System.out.println(hm.get(it.next()));
}
}
}

例2:

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Set;
/**
 * @author wx
 *
 */
public class Test6 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedHashMap lhm=new LinkedHashMap();
lhm.put("a", "zhangsan");
lhm.put("b", "lisi");
lhm.put("c", "wangwu");

System.out.println(lhm);

Set set=lhm.keySet();

Iterator it=set.iterator();
while(it.hasNext()){
Object obj=it.next();
System.out.println(obj+"-->"+lhm.get(obj));
}
}
}

例3:

import java.util.Hashtable;
/**
 * @author wx
 *
 */
public class Test7 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Hashtable ht=new Hashtable();
ht.put("a", "zhangsan");
ht.put(null, null);

System.out.println(ht);
}
}

例4:

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
 * @author wx
 *
 */
public class Test8 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//以流的形式讀取屬性文件
InputStream is=Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties");
//把讀取的內容加載到Properties對象中
Properties p=new Properties();
try {
p.load(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
p.setProperty("name", "tianqi");
//根據鍵獲取值
String id=p.getProperty("id");
String name=p.getProperty("name");
String age=p.getProperty("age");
String address=p.getProperty("address");
System.out.println(id+name+age+address);
}
}


4.集合選擇要求
選擇標準:
存放要求
無序-Set
有序-List
“key-value”對-Map
讀和改的效率
Hash*-兩者都最高
Array*-讀快改慢
Linked*-讀慢改快



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章