您的位置:首页 > 职场人生

黑马程序员_集合3(HashMap,HashTable,TreeMap,Arrays,Collections等)

2013-05-17 00:05 357 查看
--------- android培训java培训、期待与您交流!---------

一.Map概述

1.Map集合:该集合存储键值对,一对一对往里存,而且要保证键的唯一性。

Map和Set很像,事实上,Set底层就是使用了Map集合的结构。

2.Map共性方法:

1)添加

put(K key,V value),

putAll(Map<?extends K,?extends V> m)

2) 删除

clear()

remove(Object key)

3) 判断

containsvalue(Object value)

containsKey(Object key)

4)

获取

get(Object key)

size()

values()

entrySet()

keySet()

3.Map的子类

1)HashTable 底层是哈希表结构,不可以存入null键和null值,该集合是线程同步的,效率稍低。

2)HashMap :底层是哈希表结构,允许使用null键和null值,该集合是不同步的,.效率高。

3) TreeMap: 底层是二叉树结构,线程不同步,可以用于给Map集合中的键进行排序。

Map集合的两种取出方式:

1.keySet : 将Map集合中的键存入到Set集合,因为Set具备迭代取出功能,所以可以迭代取出所有的键,再使用 Map的get方法,获取键所对应的值。

代码示例:

Map<String,String> map = new HashMap<String,String>();

map.put("01","zhangsan1");

map.put("02","zhangsan2");

map.put("03","zhangsan3");

Set<String> keySet = map.keySet();

Iterator it = keySet.iterator();

while(it.hasNext()){

String key = it.next();
String value = map.get(key)
System.out.println("key"+key+"value"+value);

}


2.entrySet :将Map集合中的键和值存入到Set集合中, 而这个关系的数据类型就是:Map.Entry。

代码示例:

Map<String,String> map = new HashMap<String,String>();
map.put("01","zhangsan1");
map.put("02","zhangsan2");
map.put("03","zhangsan3");
Set<Map.Entry<String,String>> entrySet  = map.entrySet();
Iterator<Map.Entry<String,String>> it =  entrySet.iterator();
while(it.hasNext())
{
Map.Entry<String,String,> me = it.next();
String key =  me.getKey();
String value = me.getValue();
System.out.println(key+":"+value);
}


二.Collections集合工具

1.如果要往集合中存一些元素,但不需要保证唯一,这时用List集合,

但想对这个集合排序,但能排序的Tree是Set集合中的,这时就用到了Collections,Collections类是专门操作集合的工具类。

2.sort()方法的代码分析:

class Student

{

}

ArrayListlist = new ArrayList();

list.add(new Student());

public static <T extends Comparable<? super T>> void sort(List<T> list)

{

//对泛型进行限定,T必须是Comparable的子类,也就是说自身有比较性。 T代表学生

//一般Comparable后面接收的都是super,因为可以接收很多子类进来,用父类方法比。

}

3.sort()

1) sort(List<T> list);

2) sort(List<t>list,Comparator<? super T> c)

4,max()

1)public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)

5 Collections.binarySearch

binarySearch(List<? extends Comparable<?super T>> list, T key)

6 fill(List<?super T> list,T obj) 使用指定元素替换指定列表中的所有元素。

7,replaceAll(List<T> list, T oldVal, T newVal) 使用别一个值替换列表中出现的所有某一指定值。

8reverse(List<?> list) 反转指定列表中的元素的顺序。

9.reverseOrder

1) public static <T> Comparator <T> reverseOrder()

返回一个比较器,它强行逆转实现了Comparable接口的对象collection的自然顺序。

2)public static <T> Comparator<T> reverseOrder(Coparator<T> cmp);返回一个比较器,它强行逆转指定比较器的顺序。

如果指定比较器为 null,则此方法等同于 reverseOrder()

10 synchronizedList(List<T> list) 集合中的对像虽然高效,

但是线程不安全,要是被多线程操作时就会出问题,为解决这个问题,Collections类中提供了加锁的方法。

11.public static void swap(List<?> list,int i,int j)

在指定列表的指定位置处交换元素,即可交换两个元素的位置。适用于有角标的List的集合。

12shuffle(List<?> list) 使用默认随机源对指定列表进行置换。就是随机重新排序原集合。

三 Arrays数组工具

1..toString(Object[] a) :

返回指定数组内容的字符串表示形式。

2.asList(T... a) :

1)public static <T> List<T> asList(T... a) 返回一个受指定数组支持的固定大小的列表,将数组变成list集合。

2)把数组变成list集合有什么好处?

可以使用集合的思想和方法来操作数组中的元素。

3)注意:

将数组变成集合,可以用contains(),get(),indexOf(),subLIst().

但不可以使用集合的增删方法。因为数组的长度是固定的。

如果你增删,就会发生UnsupportedOperationExceoption(不支持操作)异常。

4)如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。

如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐