Java基础---集合框架()

1.集合框架

  集合框架---java做好的用来管理乱七八糟的一堆数据的java类库

   集合---乱七八糟的一堆

   框架---做好的java类库

  java中的集合框架子总体被分为两大部分

1.第一大部分用来处理单列数据的集合,最大的接口是Collection接口

  Collection接口之下有两个子接口:List接口/Set接口

   List接---是来处理有序的单列数据,可以有重复的元素

  ArrayList类

     1.用来处理有序的单列数据,可以有重复的元素

     2.添加元素会自动扩展

     3.动态数组结构,查询速度快,添加删除速度慢

 LinkedList类

    1.用来处理有序的单列数据,可以重复元素。

    2.添加元素会自动扩展

    3.双向链表结构,查询速度慢,添加删除速度快

  Set接口---用来梳理无序的单列数据,没有重复的元素,重复的元素算一个 

   LinkedHashSet类

        用来处理无序的单列数据,没有重复的元素,重复元素算一个

 2.第二大部分是用来处理键值对数据的集合,最大接口是Map接口

   HashMap类

      1.用来处理键值对数据集合

      2.允许有null【键-null  值-null】

  Hashtable类

    1.用来处理键值对数据集合

    2.不允许有null

   ConcurrentHashMap类

     支持检索的完全并发性和更新的高预期并发性的哈希表

2.关于List接口下的常用类

   1. ArrayList类

     1.用来处理有序的单列数据,可以有重复的元素。

     2.添加的元素会自动扩展。

     3.动态数组结构,查询速度快,添加删除速度慢

  1.构造方法:

     ArrayList() 构造一个初始容量为10的空列表。 

     ArrayList(Collection c) 通过实现Collection 接口的子类/子接口对象创建一个列表              

     ArrayList(int initialCapacity) 构造具有指定初始容量的空列表。 

2.实例方法:

boolean   add(Object o)--将指定的元素追加到此列表的末尾。

boolean   contains(Object o)--如果此列表包含指定的元素,则返回true。

Object      get(int index)---返回此列表中指定位置的元素

int             indexOf(Object o)---返回此列表中指定元素的第一次出现的索引,如果此列表不包含该元素则返回-1

int             lastindexOf(Object o)---返回此列表中指定元素的最后一次出现的索引,如果此列表不包含该元素则返回-1

Object     remove(int index)---删除该列表指定位置的元素

boolean     remove(Object o)---从列表删除指定元素的第一个出现(一定是列表中存在的)

Object      set(int index,Object element)---用指定的元素替换此列表中指定位置的元素

int             size()---返回此列表中的元素数

bolean      isEmpty()---如果此列表不包含元素,则返回true

void           clear()---清除列表中的所有元素

Iterator<E>    iterator() 以正确的顺序返回该列表中的元素的迭代器。 

例如:

package com.object.test1;

import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;

public class TestArrayList {

	public static void main(String[] args) {
		//ArrayList() 构造一个初始容量为10的空列表。 
		ArrayList arr=new ArrayList();
		List arry=new ArrayList();
		//ArrayList(Collection c) 通过实现Collection 接口的子类/子接口对象创建一个列表
		ArrayList arr2=new ArrayList(arry);
		List arry2=new ArrayList();
        //ArrayList(int initialCapacity) 构造具有指定初始容量的空列表。
		ArrayList arr3=new ArrayList(30);
		List  arry3=new ArrayList();
		//boolean	   add(Object o) 将指定的元素追加到此列表的末尾。 
		arr.add("张三");
		arr.add(1001);
		arr.add(23);
		arr.add(true);
		arr.add("张三");
		//size() 返回此列表中的元素数。 
		System.out.println(arr.size());
		//boolean  	contains(Object o) 如果此列表包含指定的元素,则返回 true 。 
		System.out.println(arr.contains("张三"));
		//Object 	get(int index) 返回此列表中指定位置的元素。 
		System.out.println(arr.get(2));
		//int	indexOf(Object o) 返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。
		System.out.println(arr.indexOf("张三"));
		//int	lastIndexOf(Object o) 返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。 
		System.out.println(arr.lastIndexOf("张三"));
		//Object 	remove(int index) 删除该列表中指定位置的元素。 
		//System.out.println(arr.remove(4));
		//System.out.println(arr.size());
		//boolean 	remove(Object o) 从列表中删除指定元素的第一个出现(如果存在)。 
		//System.out.println(arr.remove("张三"));
		//System.out.println(arr.size());
	    //set(int index, Object  element) 用指定的元素替换此列表中指定位置的元素。
		arr.set(4, "李四");
		System.out.println(arr.get(4));
		//boolean	 isEmpty() 如果此列表不包含元素,则返回 true 。
		System.out.println(arr.isEmpty());
		//void	clear() 从列表中删除所有元素。 
		//arr.clear();
		//System.out.println(arr.size());
		//Iterator<E>	iterator() 以正确的顺序返回该列表中的元素的迭代器。
		//for循环
		for(int i=0;i<arr.size();i++){
			System.out.println("for循环=="+arr.get(i));
		}
		//增强的for循环
		for(Object objec:arr){
			System.out.println("增强的for循环=="+objec);
		}
		Iterator list=arr.iterator();
		while(list.hasNext()){
			Object obj=list.next();
			System.out.println("Iterator迭代器=="+obj);
		}
	}

}

 2.LinkedList类

1.用来处理有序的单列数据,可以有重复的元素。

 2.添加的元素会自动扩展。

 3.双向链表结构,查询速度慢,添加删除速度快

构造方法

LinkedList()--构造一个空列表 

LinkedList(Collection c)通过一个实现Collection接口的子类/子接口对象创建一个列表

实例方法:

boolean   add(Object o)--将指定的元素追加到此列表的末尾。

boolean   contains(Object o)--如果此列表包含指定的元素,则返回true。

Object      get(int index)---返回此列表中指定位置的元素

int             indexOf(Object o)---返回此列表中指定元素的第一次出现的索引,如果此列表不包含该元素则返回-1

int             lastindexOf(Object o)---返回此列表中指定元素的最后一次出现的索引,如果此列表不包含该元素则返回-1

Object     remove(int index)---删除该列表指定位置的元素

boolean     remove(Object o)---从列表删除指定元素的第一个出现(一定是列表中存在的)

Object      set(int index,Object element)---用指定的元素替换此列表中指定位置的元素

int             size()---返回此列表中的元素数

bolean      isEmpty()---如果此列表不包含元素,则返回true

 ArrayList比LinkedList多出一组对列表第一个元素和最后一个元素的操作方法,ArrayList是动态数组结构,他在查找第一个元素和最后一个元素的时很麻烦,而LinkedList采用的是双向链表结构,这种结构在查找第一个元素和最后一个元素的时候是最快的

就像一列火车我们眼前驶过,我们可能不知道这列火车由几节车厢组成,但是我们一定会在第一时间看清第一节与最后一节车厢位置。

void          clear()---清除列表中的所有元素

void          addFirst(Object e)---将指定元素追加到此列表的开头

void          addLast(Object e)---将指定元素追加到此列表的末尾

Object      getFirst()---返回此列表的第一个元素

Object      getLast()---返回此列表的最后一个元素

Object     removeFirst() 从此列表中删除并返回第一个元素

Object     removeLast() 从此列表中删除并返回第一个元素

例如:

package com.object.test1;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class TestLinkList {

	public static void main(String[] args) {
		//LinkedList() 构造一个空列表。 
		LinkedList lin=new LinkedList();
		List lis11=new LinkedList();
		//LinkedList(Collection c)通过一个实现Collection接口的子类/子接口对象创建一个列表
		ArrayList arr=new ArrayList();
		LinkedList lin2=new LinkedList(arr);
		//boolean	   add(Object o) 将指定的元素追加到此列表的末尾。 
		   lin.add("张三");
		   lin.add(1001);
		  lin.add(23);
		lin.add(true);
		lin.add("张三");
				//size() 返回此列表中的元素数。 
				System.out.println(lin.size());
				//boolean  	contains(Object o) 如果此列表包含指定的元素,则返回 true 。 
				System.out.println(lin.contains("张三"));
				//Object 	get(int index) 返回此列表中指定位置的元素。 
				System.out.println(lin.get(2));
				//int	indexOf(Object o) 返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。
				System.out.println(lin.indexOf("张三"));
				//int	lastIndexOf(Object o) 返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。 
				System.out.println(lin.lastIndexOf("张三"));
				//Object 	remove(int index) 删除该列表中指定位置的元素。 
				//System.out.println(lin.remove(4));
				//System.out.println(lin.size());
				//boolean 	remove(Object o) 从列表中删除指定元素的第一个出现(如果存在)。 
				//System.out.println(lin.remove("张三"));
				//System.out.println(lin.size());
			    //set(int index, Object  element) 用指定的元素替换此列表中指定位置的元素。
				lin.set(4, "李四");
				System.out.println(lin.get(4));
				//boolean	 isEmpty() 如果此列表不包含元素,则返回 true 。
				System.out.println(lin.isEmpty());
				//void	clear() 从列表中删除所有元素。 
				//lin.clear();
				//System.out.println(lin.size());
				//void	addFirst(Object e) 在该列表开头插入指定的元素。
				lin.addFirst("lisi");
				//Object 	getFirst() 返回此列表中的第一个元素。 
				System.out.println(lin.getFirst());
				//Object 	removeFirst() 从此列表中删除并返回第一个元素。
				lin.removeFirst();
				System.out.println(lin.getFirst());
				//void	addLast(Object  e) 将指定的元素追加到此列表的末尾。
				lin.addLast("王五");
				//Object 	getLast() 返回此列表中的最后一个元素。
				System.out.println(lin.getLast());
				//Object 	removeLast() 从此列表中删除并返回最后一个元素。 
				lin.removeLast();
				System.out.println(lin.getLast());
				//for循环
				for(int i=0;i<lin.size();i++){
					System.out.println("for循环=="+lin.get(i));
				}
				//增强的for循环
				for(Object obj:lin){
					System.out.println("for循环=="+obj);
				}
				//Iterator<E>	iterator() 以正确的顺序返回该列表中的元素的迭代器。
				Iterator it=lin.iterator();
				while(it.hasNext()){
					Object objc=it.next();
					System.out.println("Iterator迭代器=="+objc);
				}
	}

}

3.关于Set接口的常用类

1.HashSet类

    用来处理无序的单列数据,没有重复的元素,重复的元素算一个

 构造方法:

 HashSet()---构造一个新的空集合;默认初始容量(16)和负载因子(0.75)。

 HashSet(Collection c)---构造一个包含指定集合中的元素的新集合。

 HashSet(int initialCapacity)---构造一个新的空集合,具有指定的初始容量和默认的负载因子(0.75)

 HashSet(int initialCapacity, float loadFactor) 具有指定的初始容量和指定的负载因子。 

 实例方法:

boolean  add(Object e)----将指定元素添加到此集合

void         clear()---从此集合中删除所有元素

boolean    contains(Object o) ---如果此集合包含指定的元素,则返回 true 。 

boolean    isEmpty() ---如果此集合不包含元素,则返回 true 。 

Iterator    iterator()---返回此集合中元素的迭代器。   

boolean    remove(Object o)---如果存在,则从该集合中删除指定的元素。 

int    size()---返回此集合中的元素数(其基数)

例如:

package com.object.test1;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class TestHashSet {

	public static void main(String[] args) {
		//HashSet() 构造一个新的空集合; 默认初始容量(16)和负载因子(0.75)。 
		HashSet  hast=new HashSet();
		Set has1=new HashSet();
		//HashSet(Collection c) 构造一个包含指定集合中的元素的新集合。 
		HashSet  hast2=new HashSet(new ArrayList());
		Set has2=new HashSet(new ArrayList());
		//HashSet(int initialCapacity) 构造一个新的空集合; 具有指定的初始容量和默认负载因子(0.75) 
		HashSet  hast3=new HashSet(30);
		//HashSet(int initialCapacity, float loadFactor) 具有指定的初始容量和指定的负载因子。 
		HashSet  hast4=new HashSet(20,0.5f);
		//boolean  	add(Object e) 将指定的元素添加到此集合(如果尚未存在)。 
		hast.add("张三");
		hast.add(18);
		hast.add(189.4);
		hast.add(true);
		hast.add("张三");
		//boolean	   contains(Object o) 如果此集合包含指定的元素,则返回 true 。 
		System.out.println(hast.contains("张三"));//true
		System.out.println(hast.contains("李四"));//false
		System.out.println(hast.size());
		//boolean	   remove(Object o) 如果存在,则从该集合中删除指定的元素。
		System.out.println(hast.remove("张三"));
		//int	size() 返回此集合中的元素数(其基数)。 
		System.out.println(hast.size());
		//boolean	  isEmpty() 如果此集合不包含元素,则返回 true 。
		System.out.println(hast.isEmpty());
				//增强的for循环
				for(Object objec:hast){
					System.out.println("增强的for循环=="+objec);
				}
				Iterator list=hast.iterator();
				while(list.hasNext()){
					Object obj=list.next();
					System.out.println("Iterator迭代器=="+obj);
				}
	}
}

 2.LinkedHashSet类

   LinkedHashSet类是HashSet类的子类

 构造方法:

LinkedHashSet() 构造一个新的空集合; 默认初始容量(16)和负载因子(0.75)。

LinkedHashSet(Collection c) 构造一个包含指定集合中的元素的新集合。  

LinkedHashSet(int initialCapacity) 构造一个新的空集合; 具有指定的初始容量和默认负载因子(0.75)。 

LinkedHashSet(int initialCapacity, float loadFactor) 具有指定的初始容量和指定的负载因子。 

实例方法:

boolean    add(Object e) 将指定的元素添加到此集合(如果尚未存在)。 

void         clear()---从此集合中删除所有元素

boolean    contains(Object o) ---如果此集合包含指定的元素,则返回 true 。 

boolean    isEmpty() ---如果此集合不包含元素,则返回 true 。 

Iterator    iterator()---返回此集合中元素的迭代器。   

boolean    remove(Object o)---如果存在,则从该集合中删除指定的元素。 

int    size()---返回此集合中的元素数(其基数)

例如:

package com.object.test1;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;

public class TestLinkedSet {

	public static void main(String[] args) {
		// LikedHashSet() 构造一个新的空集合; 默认初始容量(16)和负载因子(0.75)。
		LinkedHashSet set1 = new LinkedHashSet();
		Set set11 = new LinkedHashSet();
		// LikedHashSet(Collection c) 构造一个包含指定集合中的元素的新集合。
		LinkedHashSet set2 = new LinkedHashSet(new ArrayList());
		Set set122 = new LinkedHashSet(new ArrayList());
		// LikedHashSet(int initialCapacity) 构造一个新的空集合; 具有指定的初始容量和默认负载因子(0.75)。
		LinkedHashSet set3 = new LinkedHashSet(20);
		Set set133 = new LinkedHashSet(20);
		// LikedHashSet(int initialCapacity, float loadFactor)
		// 具有指定的初始容量和指定的负载因子。
		LinkedHashSet set4 = new LinkedHashSet(20, 0.5f);
		Set set144 = new LinkedHashSet(20, 0.5f);

		// 实例方法
		// boolean add(Object e) 将指定的元素添加到此集合(如果尚未存在)。
		set1.add("zhangsan");
		set1.add(23);
		set1.add(168.5);
		set1.add(true);
		set1.add("zhangsan");
		// int size() 返回此集合中的元素数(其基数)。
		System.out.println("size=" + set1.size());
		// boolean remove(Object o) 如果存在,则从该集合中删除指定的元素。
		set1.remove("zhangsan");
		System.out.println("size=" + set1.size());
		// boolean contains(Object o) 如果此集合包含指定的元素,则返回 true 。
		System.out.println("contains==" + set1.contains("lisi"));
		// void clear() 从此集合中删除所有元素。
		// set1.clear();
		// boolean isEmpty() 如果此集合不包含元素,则返回 true 。
		System.out.println("isEmpty==" + set1.isEmpty());

		// Iterator iterator() 返回此集合中元素的迭代器。
		// 1.增强的for
		for (Object obj : set1) {
			System.out.println("增强的for---" + obj);
		}
		// 2.Iterator<E> iterator() 以正确的顺序返回该列表中的元素的迭代器。
		Iterator it = set1.iterator();
		while (it.hasNext()) {
			Object obj = it.next();
			System.out.println("Iterator迭代器---" + obj);

	}
	}
}

 4.关于Map接口的常用类

    Map接口用来处理键值对数据的集合

   1.HashMap类

 1.允许null的值和null键

 2.数据保存是无序的

 3.重复的键被算作一个数据

  构造方法:

HashMap() 构造一个空的 HashMap ,默认初始容量(16)和默认负载系数(0.75)。 

HashMap(int initialCapacity) 构造一个空的 HashMap具有指定的初始容量和默认负载因子(0.75)。 

HashMap(int initialCapacity, float loadFactor) 构造一个空的 HashMap具有指定的初始容量和负载因子(0.75)。

HashMap(Map m) 构造一个新的 HashMap与指定的相同的映射 Map 。

实例方法:

  1. boolean    put(Object e)---向集合中添加键值对 
  2. void         clear()---清空集合
  3. boolean    containsKey(Object key) 判断集合中是否包含指定的键
  4. boolean    containsValue(Object value) 判断集合中是否包含指定的值 
  5. Object     get(Object key) 根据指定的键得到该键对应的值
  6.  V            remove(Object o)---如果存在,则从该集合中删除指定的元素。 
  7. boolean    isEmpty() 判断集合是否为空。
  8. int             size() 得到集合中键值对元素的个数
  9. Set    keySet() 得到集合中所有的键保存到Set集合中
  10. Collection    values() 得到集合中所有的值保存到Collection集合中 
  11. Set<Map.Entry<K,V>>    entrySet() 得到集合中所有的键值对数据Set集合中

例如:

package com.objet.test2;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;


public class TestHashMap {

	public static void main(String[] args) {
		//HashMap() 构造一个空的 HashMap ,默认初始容量(16)和默认负载系数(0.75)。
		HashMap hasm1=new HashMap();
		//HashMap(int initialCapacity) 构造一个空的 HashMap具有指定的初始容量和默认负载因子(0.75)。 
		HashMap hasm2=new HashMap(20);
		//HashMap(int initialCapacity, float loadFactor) 构造一个空的 HashMap具有指定的初始容量和负载因子。
		HashMap hasm3=new HashMap(20,0.8f);
		//HashMap(Map m) 构造一个新的 HashMap与指定的相同的映射 Map 。 
		HashMap hasm4 =new HashMap(hasm1);
		//Object 	put(Object key, Object value) 向集合中添加键值对数据
		hasm1.put("id",1001);
		hasm1.put("name", "张三");
		hasm1.put("age", 23);
		hasm1.put(true, 189.1);
		hasm1.put("sex", null);
		hasm1.put(null, null);
		//boolean	  containsKey(Object key) 判断集合中是否包含指定的键
		System.out.println(hasm1.containsKey(true));
		//boolean	c ontainsValue(Object value) 判断集合中是否包含指定的值
		System.out.println(hasm1.containsValue("张三"));
		//Object 	get(Object key) 根据指定的键得到该键对应的值
		System.out.println(hasm1.get("age"));
		//boolean 	isEmpty() 判断集合是否为空。
		System.out.println(hasm1.isEmpty());
		//int	size() 得到集合中键值对元素的个数
		System.out.println(hasm1.size());
		//V	remove(Object key)  根基指定的键删除对应的键值对数据值
		//hasm1.remove("id");
		//System.out.println(hasm1.get("id"));
		//Set	keySet() 得到集合中所有的键保存到Set集合中
		Set list=hasm1.keySet();
		for(Object obj:list){
			System.out.println("forkey--"+obj);
		}
		Iterator it=list.iterator();
		while(it.hasNext()){
			Object obj=it.next();
			System.out.println("Iteratorkey--"+obj);
		}
		///Collection	values() 得到集合中所有的值保存到Collection集合中 
		Collection cole2=hasm1.values();
		for(Object obj:cole2){
			System.out.println("Collectionforkey--"+obj);
		}
		Iterator it2=cole2.iterator();
		while(it2.hasNext()){
			Object obj=it2.next();
			System.out.println("CollectionIteratorkey--"+obj);
		}
		//Set<Map.Entry<K,V>>	entrySet() 得到集合中所有的键值对数据Set集合中
		Set<Map.Entry<Object,Object>>  getlist=hasm1.entrySet();
		for(Map.Entry<Object,Object> obj:getlist){
			System.out.println("entrySetfor--"+obj.getKey()+":"+obj.getValue());
		}
	}

}

 2.Hashtable类

1.数据保存是无序的

2.不能有null键/null值

3.用作键的对象必须实现hashCode方法和equals方法。 

4.重复的键被算作一个数据

5.线程安全

 构造方法:

Hashtable() 构造一个新的,空的散列表,默认初始容量(11)和负载因子(0.75)。 

Hashtable(int initialCapacity) 构造一个新的,空的哈希表,具有指定的初始容量和默认负载因子0.75

Hashtable(int initialCapacity, float loadFactor) 构造一个新的,空的哈希表,具有指定的初始容量和指定的负载因子。 

Hashtable(Map t) 构造一个与给定地图相同的映射的新哈希表。 

 实例方法:

  1. boolean    put(Object e)---向集合中添加键值对 
  2. void         clear()---清空集合
  3. boolean    containsKey(Object key) 判断集合中是否包含指定的键
  4. boolean    containsValue(Object value) 判断集合中是否包含指定的值 
  5. Object     get(Object key) 根据指定的键得到该键对应的值
  6.  V            remove(Object o)---如果存在,则从该集合中删除指定的元素。 
  7. boolean    isEmpty() 判断集合是否为空。
  8. int             size() 得到集合中键值对元素的个数
  9. Set    keySet() 得到集合中所有的键保存到Set集合中
  10. Collection    values() 得到集合中所有的值保存到Collection集合中 
  11. Set<Map.Entry<K,V>>    entrySet() 得到集合中所有的键值对数据Set集合中
  12. Enumeration<K>    keys() 返回此散列表中键的枚举。
  13. Enumeration<V>    elements() 返回此散列表中值的枚举。 

例如:

package com.objet.test2;

import java.util.Collection;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;


public class TestHashtale {

	public static void main(String[] args) {
		//Hashtable() 构造一个新的,空的散列表,默认初始容量(11)和负载因子(0.75)。 
		Hashtable hasm1=new Hashtable();
		//Hashtable(int initialCapacity) 构造一个新的,空的哈希表,具有指定的初始容量和默认负载因子0.75 
		Hashtable hasm2=new Hashtable(20);
		//Hashtable(int initialCapacity, float loadFactor) 构造一个新的,空的哈希表,具有指定的初始容量和指定的负载因子。 。
		Hashtable hasm3=new Hashtable(20,0.8f);
		//Hashtable(Map t) 构造一个与给定地图相同的映射的新哈希表。 
		Hashtable hasm4 =new Hashtable(hasm1);
		//Object 	put(Object key, Object value) 向集合中添加键值对数据
		hasm1.put("id",1001);
		hasm1.put("name", "张三");
		hasm1.put("age", 23);
		hasm1.put(true, 189.1);
		hasm1.put("sex", null);
		hasm1.put(null, null);
		//boolean	  containsKey(Object key) 判断集合中是否包含指定的键
		System.out.println(hasm1.containsKey(true));
		//boolean	c ontainsValue(Object value) 判断集合中是否包含指定的值
		System.out.println(hasm1.containsValue("张三"));
		//Object 	get(Object key) 根据指定的键得到该键对应的值
		System.out.println(hasm1.get("age"));
		//boolean 	isEmpty() 判断集合是否为空。
		System.out.println(hasm1.isEmpty());
		//int	size() 得到集合中键值对元素的个数
		System.out.println(hasm1.size());
		//V	remove(Object key)  根基指定的键删除对应的键值对数据值
		//hasm1.remove("id");
		//System.out.println(hasm1.get("id"));
		//Set	keySet() 得到集合中所有的键保存到Set集合中
		Set list=hasm1.keySet();
		for(Object obj:list){
			System.out.println("forkey--"+obj);
		}
		Iterator it=list.iterator();
		while(it.hasNext()){
			Object obj=it.next();
			System.out.println("Iteratorkey--"+obj);
		}
		///Collection	values() 得到集合中所有的值保存到Collection集合中 
		Collection cole2=hasm1.values();
		for(Object obj:cole2){
			System.out.println("Collectionforkey--"+obj);
		}
		Iterator it2=cole2.iterator();
		while(it2.hasNext()){
			Object obj=it2.next();
			System.out.println("CollectionIteratorkey--"+obj);
		}
		//Set<Map.Entry<K,V>>	entrySet() 得到集合中所有的键值对数据Set集合中
		Set<Map.Entry<Object,Object>>  getlist=hasm1.entrySet();
		for(Map.Entry<Object,Object> obj:getlist){
			System.out.println("entrySetfor--"+obj.getKey()+":"+obj.getValue());
		}
		//Enumeration<K>	keys() 返回此散列表中键的枚举。
		//Enumeration<V>	elements() 返回此散列表中值的枚举。
	}

}

 3.TreeMap类--红黑树基于NavigableMap实现【有序】

1.按照键的字母顺序排列

2.键不能为null

3.重复的键被算作一个数据

4.非线程安全

构造方法

TreeMap() 使用其键的自然排序构造一个新的空树状图。 

TreeMap(Map<? extends K,? extends V> m) 构造一个新的树状图,其中包含与给定地图相同的映射,根据其键的自然顺序进行排序 。

实例方法:

 

  1. boolean    put(Object e)---向集合中添加键值对 
  2. void         clear()---清空集合
  3. boolean    containsKey(Object key) 判断集合中是否包含指定的键
  4. boolean    containsValue(Object value) 判断集合中是否包含指定的值 
  5. Object     get(Object key) 根据指定的键得到该键对应的值
  6.  V            remove(Object o)---如果存在,则从该集合中删除指定的元素。 
  7. boolean    isEmpty() 判断集合是否为空。
  8. int             size() 得到集合中键值对元素的个数
  9. Set    keySet() 得到集合中所有的键保存到Set集合中
  10. Collection    values() 得到集合中所有的值保存到Collection集合中 
  11. Set<Map.Entry<K,V>>    entrySet() 得到集合中所有的键值对数据Set集合中

例如:

package com.objet.test2;

import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;


public class TestTreeMap {

	public static void main(String[] args) {
		//TreeMap() 使用其键的自然排序构造一个新的空树状图。 
		TreeMap hasm1=new TreeMap();
		//TreeMap(Map<? extends K,? extends V> m) 构造一个新的树状图,其中包含与给定地图相同的映射,根据其键的自然顺序进行排序 。
		//Object 	put(Object key, Object value) 向集合中添加键值对数据
		hasm1.put("id",1001);
		hasm1.put("name", "张三");
		hasm1.put("age", 23);
		hasm1.put("height",187.5);
	    hasm1.put("sex", null);
		//hasm1.put(null, null);
		//boolean	  containsKey(Object key) 判断集合中是否包含指定的键
		System.out.println(hasm1.containsKey("id"));
		//boolean	c ontainsValue(Object value) 判断集合中是否包含指定的值
		System.out.println(hasm1.containsValue("张三"));
		//Object 	get(Object key) 根据指定的键得到该键对应的值
		System.out.println(hasm1.get("age"));
		//boolean 	isEmpty() 判断集合是否为空。
		System.out.println(hasm1.isEmpty());
		//int	size() 得到集合中键值对元素的个数
		System.out.println(hasm1.size());
		//V	remove(Object key)  根基指定的键删除对应的键值对数据值
		//hasm1.remove("id");
		//System.out.println(hasm1.get("id"));
		//Set	keySet() 得到集合中所有的键保存到Set集合中
		Set list=hasm1.keySet();
		for(Object obj:list){
			System.out.println("forkey--"+obj);
		}
		Iterator it=list.iterator();
		while(it.hasNext()){
			Object obj=it.next();
			System.out.println("Iteratorkey--"+obj);
		}
		///Collection	values() 得到集合中所有的值保存到Collection集合中 
		Collection cole2=hasm1.values();
		for(Object obj:cole2){
			System.out.println("Collectionforkey--"+obj);
		}
		Iterator it2=cole2.iterator();
		while(it2.hasNext()){
			Object obj=it2.next();
			System.out.println("CollectionIteratorkey--"+obj);
		}
		//Set<Map.Entry<K,V>>	entrySet() 得到集合中所有的键值对数据Set集合中
		Set<Map.Entry<Object,Object>>  getlist=hasm1.entrySet();
		for(Map.Entry<Object,Object> obj:getlist){
			System.out.println("entrySetfor--"+obj.getKey()+":"+obj.getValue());
		}
	}

}

 4.ConcurrentHashMap类与HashMap相似

     ConcurrentHashMap类线程安全支出检索是的高并发处理。

     如果需要线程安全的并发实现,那么建议使用ConcurrentHashMap代替Hashtable。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值