JavaSE集合框架总结

来源:互联网 发布:js 清除cookie 编辑:程序博客网 时间:2024/06/06 00:52

Map<T>Set<T>List<T>比较总结

 

Map<T>

Set<T>

List<T>

元素特点

Key-value存储

Key不可重复

Value可重复

直接存储

不可重复

直接存储

可重复

遍历方式取出时

KeySet+Iterator方式

EntrySet+Iterator方式

Iterator方式

 

Iterator方式

或索引方式

遍历取出时

HashMap无序

TreeMap Key有序

HashSet无序

TreeSet有序

有序(先添加的索引为0

使用时注意

事项

HashMapKey是否自定义重复规则

TreeMap是否需要自定义比较排序的规则

是否需要自定义重复规则

TreeSet是否需要自定义比较排序规则

是否有删除或者插入操作,有就LinkedList,有搜索操作用ArrayList

有无get方式取出

 get(Key)方式

get方法

get(index)方式

 

一、List<T>接口的实现类的用法

1ArrayList<T>直接创建对象进行方法调用,常用方法如下。

1、创建List<T>  list = new ArrayList<>();

名称

功能

add(T)

增加一个元素

get(i )

取出某个元素

Contains(T)

是否包含某元素

isEmpty()

集合是否为空

Set(index,T)

替换指定位置的元素

Remove(index)

删除指定元素

Clear()

清空

2、遍历方式

1、有索引遍历

For(int i = 0; i < list.size(); i++ )

{       

     T  t = list.get(i);

}

2无索引方式

For(Iterator iter = list.iterator();iter.hasNext();)

{       

      T  t = iter.next();

}

3、底层维护的是数组,是有序的,可以添加重复的元素

2LinkedList<T>直接创建对象进行方法调用,常用方法如下。

1、创建List<T>  list = new LinkedList<>();

名称

功能

add(T)

增加一个元素

get(i )

取出某个元素

Contains(T)

是否包含某元素

isEmpty()

集合是否为空

Set(index,T)

替换指定位置的元素

Remove(index)

删除指定元素

Clear()

清空

2、遍历方式

1、有索引遍历

For(int i = 0; i < list.size(); i++ )

{       

     T  t = list.get(i);

}

2无索引方式

For(Iterator iter = list.iterator();iter.hasNext();)

{       

      T  t = iter.next();

}

3、底层维护的是一个个的Entry对象,是有序的,可以添加重复的元素,可以用来实现队列与栈的数据结构。

LinkedListArrayList总结

 

LinkedList

ArrayList

使用方式

  New

 New

遍历

 For循环+索引或者Iterator

For循环+索引或者Iterator

底层

双向循环链表

 数组

使用特点

有删除和插入操作时

搜索操作时

 List是元素是可重复的,取出是有序的,有get方法取出。

二、Set<T>接口的实现类的用法

1HashSet<T>直接创建对象进行方法调用,常用方法如下。

1、创建Set<T>  set = new HashSet<>();

名称

功能

add(T)

增加一个元素

Contains(T)

是否包含某元素

isEmpty()

集合是否为空

Remove(index)

删除指定元素

Clear()

清空

2、遍历方式

1、只有无索引方式

For(Iterator iter = set.iterator();iter.hasNext();)

{       

      T  t = iter.next();

}

3、HashSet的元素特点是元素无重复,取出时无序,所以在添加元素到集合的时候需要判断此对象是否已经被添加,判断规则需要自己实现,实现的时候一般是元素类中重写HashCode与equals方法。String类已经重写了HashCode与equals方法,内容一样则说明俩个对象一样,默认的Object类的比较方法是判断俩个对象的地址是否一样决定是否为同一元素。

2TreeSet<T>直接创建对象进行方法调用,常用方法如下。

1、创建Set<T>  set = new TreeSet<>();

名称

功能

add(T)

增加一个元素

Contains(T)

是否包含某元素

isEmpty()

集合是否为空

Remove(index)

删除指定元素

Clear()

清空

First()

返回第一个元素

Last()

返回最后一个元素

2、遍历方式

1、只有无索引方式

For(Iterator iter = set.iterator();iter.hasNext();)

{       

       T t = iter.next();

}

3)   TreeSet的元素特点是元素无重复,取出时有序,所以在添加元素,不仅需要进行对象是否存在的判断,还要进行排序,TreeSet的默认排序规则是自然排序(数字大小)或者字母顺序,对象的顺序需要调用实现自己的比较规则,在元素类定义时实现comparator接口,修改compare方法;

 HashSetTreeSet总结

 

 Hashset

 TreeSet

使用方式

  New

 New

遍历

 Iterator方式

Iterator方式

使用特点

元素无重复

元素无重复并有序

注意事项

实现对象重复比较

实现对象重复比较外还需实现有序的规则

使用特点在代码上的体现

元素类重写HashCode与equals方法

元素类实现Comparator接口,并重写compare方法

Set<T>元素不可重复,取出时HashSet无序,TreeSet有序,没有get方法取元素,遍历只能用Iterator接口迭代的方法。

一、Map<T>接口的实现类的用法(映射机制 Key - value

1HashMap<T>直接创建对象进行方法调用,常用方法如下。

1、创建Map<T>  map = new HashMap<>();

名称

功能

put(Key,value)

增加一对值

get(key )

取出对应Key的Value值

ContainsKey()

是否包含某个Key

ContainsValue()

是否包含某个Value;

isEmpty()

集合是否为空

EntrySet()

返回所有实体的Set集合

KeySet()

返回所有key的Set集合

Remove(key)

删除指定Key元素

Clear()

清空

Values();

返回所有的value集合

2、遍历方式

1、KeySet方式遍历

 Set<T> set = map.keySet();

For(Iterator iter = set.iterator;iter.hasNext();)

{       

     T  key = iter.next();

     T  value = map.get(key);

}

2、EntrySet方式遍历

 Set<Map.Entry<T>>  set = map.EntrySet();

For(Iterator iter = set.iterator;iter.hasNext();)

{       

   Map.Entry<T>  entry =  iter.next();

        T  Key  = entry.getKey()

        T  value = entry.getValue();

}

 

3、HashMap的元素特点是Key-Value对存储的,Key不能重复,Value可以重复,增加元素对的时候如果该key存在时,则用现在的value代替原来的value值,遍历取出元素对时是无序的,可以用get(Key)的方式取value,如果该Key不存在则返回null;

2TreeMap<T>直接创建对象进行方法调用,常用方法如下。

1、创建Map<T>  map = new TreeMap<>();

名称

功能

put(Key,value)

增加一对值

get(key )

取出对应Key的Value值

ContainsKey()

是否包含某个Key

ContainsValue()

是否包含某个Value;

isEmpty()

集合是否为空

EntrySet()

返回所有实体的Set集合

KeySet()

返回所有key的Set集合

Remove(key)

删除指定Key元素

Clear()

清空

Values();

返回所有的value集合

2、遍历方式

1、KeySet方式遍历

 Set<T> set = map.keySet();

For(Iterator iter = set.iterator;iter.hasNext();)

{       

     T  key = iter.next();

     T  value = map.get(key);

}

2、EntrySet方式遍历

 Set<Map.Entry<T>>  set = map.EntrySet();

For(Iterator iter = set.iterator;iter.hasNext();)

{       

   Map.Entry<T>  entry =  iter.next();

        T  Key  = entry.getKey()

        T  value = entry.getValue();

}

 

3、TreeMap的元素特点是Key-Value对存储的,Key不能重复,Value可以重复,增加元素对的时候如果该key存在时,则用现在的value代替原来的value值,遍历取出元素对时Key是有序的,默认是自然顺序,可以让key类实现Comparator接口自定义Key的排序,可以用get(Key)的方式取value,如果该Key不存在则返回null;

 HashMapTreeMap总结

 

 Hashset

 TreeSet

使用方式

  New

 New

遍历

 KeySet+Iterator方式

EntrySet+Iterator方式

 KeySet+Iterator方式

EntrySet+Iterator方式

使用特点

Key不可重复Value可重复并取出时无序

Key不可重复Value可重复并取出时Key有序

注意事项

实现对Key的有序的规则

使用特点在代码上的体现

MyCoparator<Key类型>类实现Comparator接口,并重写compare方法

Map<T> 中Key-value对中Key不可重复,value可重复,取出时HashMap无序,TreeSet有序,有get(Key)方法取Value,遍历都可以用KetSet()+Iterator接口迭代和EntrySet()+Iterator接口迭代的方法。

 

TreeMapTreeSet用到设计模式(策略模式 Strategy

1)   抽象策略角色abstractStrategy(一个抽象类或接口)例如comparator接口

2)   具体策略角色(包装了相关的算法和行为,例如:比较行为)

3)   环境角色(持有抽象策略角色的一个引用,以及改变策略的方法,最终给客户端调用,)

4)   客户端(开发者)

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

0 0
原创粉丝点击