Set集合和Map集合

Set集合
元素无序 (元素存取顺序不一致),元素不重复.Set集合保证元素的唯一性是靠重写HashCode()方法和equals()方法.
SetHashSet,LinkedHashSet,Treeset
HashSet:
此类实现Set接口,由哈希表(实际是是一个HsahMap实列)支持它不保证Set的迭代顺序;特别是他不保证该顺序恒久不变.此类允许使用null元素.底层的数据结构是哈希表,线程不安全,效率高,允许存储null元素,元素无序且唯一.
唯一性:是要靠元素重写HashCode()和equals()方法,如果不重写则无法保证元素唯一.
LinkedHashSet:元素有序且唯一
具有可预知的迭代顺序Set接口的哈希表和链接列表实现.线程不安全,效率高.
底层数据结构是链表和哈希表
链表保证的元素有序,哈希表保证的元素唯一
TreeSet:元素唯一,且能对元素进行排序线程不安全,效率高
底层数据结构是二叉树.
使用元素的自然顺序对元素进行排序,或者根据创建Set时提供的Comparator进行排序,具体取决于使用的构造方法.
Collections
public static <T> void sort(List<T> list) :
指定列表为升序排序,根据其元素的 natural ordering
public static <T> int binarySearch(List<?> list,T key):
使用二进制搜索算法搜索指定对象的指定列表。
public static <T> T max(Collection<?> coll)
返回最大值
public static void reverse(List<?> list)
反转指定列表中元素的顺序。
public static void shuffle(List<?> list)
打乱元素顺序
public static <T> void sort(List<T> list) :
指定列表为升序排序,根据其元素的 natural ordering。
public static <T> void sort(List<T> list, Comparator<T> c)
根据指定的比较器指定的顺序对指定的列表进行排序。

接口Map<k,v>
类型参数
k-此映射所维护的键的类型
v-映射值的类型
将键映射 到对象.一个映射不能包含重复的键;每个键最多只能映射到一个值.
HashMap,Hashtable,LinkedHashMap,TreeMap(双列集合)
HashMap:
基于哈希表的map接口的实现.
此实现所提供的所有可选的映射操作,并允许使用null值和null键.(除了非同步和允许使用null之外,HashMap类与Hashtable大致相同.)此类不保证映射的顺序,特别是它不保证该顺序恒久不变.Map集合所有的数据结构,只跟键有关.
HashMap:是线程不安全,效率高,支持null只和null键
Hashtable:是线程安全,效率低,不支持null只和null键
LinkedHashMap:
Map接口的哈希表和链接列表实现,具有可预知的迭代顺序
特点:底层的数据结构是由哈希表和链表 元素有序 并且唯一元素的有序性由链表数据结构保证 唯一性由哈希表数据结构保证;
Map集合的数据结构只和键有关
TreeMap:数据结构是二叉树可以对键排序,不允许null键线程不安全效率高.
Map方法:
public V put(K key, V value):
给集合中添加元素
public void clear():
从这个映射中移除所有的映射(可选操作)。
public V remove(Object key):
如果存在(可选操作),则从该Map中移除一个键的映射
public boolean containsKey(Object key):
返回 true如果这Map包含一个指定的键映射
public boolean containsValue(Object value):
返回 true如果映射到指定的值的一个或多个键
public boolean isEmpty():
返回 true如果这个Map不包含键值的映射。
public Set<Map.Entry<K,V>> entrySet():
返回一个 Set视图的映射包含在这个Map
public V get(Object key):
返回指定的键映射的值,或 null如果这个Map不包含的键映射
public Set<K> keySet() :
返回一个 Set的关键视图包含在这个Map
public Collection<V> values():
返回一个视图的值包含在这个Map。
public int size():
返回这个映射中的键值映射的数目。

原文地址:http://blog.51cto.com/13852519/2155496

时间: 2024-10-10 00:45:05

Set集合和Map集合的相关文章

【spring set注入 注入集合】 使用set注入的方式注入List集合和Map集合/将一个bean注入另一个Bean

Dao层代码: 1 package com.it.dao; 2 3 public interface SayHell { 4 public void sayHello(); 5 } Dao的Impl实现层: 1 package com.it.dao.impl; 2 3 import java.util.List; 4 import java.util.Map; 5 6 import com.it.dao.SayHell; 7 8 /** 9 * Spring如何知道setter方法?如何将值注入

Scala集合和Java集合对应转换关系

作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一下,加深记忆 scala.collection.Iterable <=> java.lang.Iterable scala.collection.Iterable <=> java.util.Collection scala.collection.Iterator <=>

跟王老师学集合(一)为什么要使用集合和Java集合概述

为什么要使用集合和Java集合概述 主讲人:王少华  QQ群号:483773664 学习目标 1 理解为什么使用集合 2 掌握Java集合框架 一.使用数组缺陷: 在电子宠物系统中,如果想存储多个宠物信息,可以使用数组来实现.例如,可以定义一个长度50的Dog类型的数组,存储多个Dog对象的信息.但是采用数组存在以下一些明显的缺陷: 数组长度固定不变,不能很好适应元素数量动态变化的情况.若要存储大于50个狗狗的信息,则数组长度不足:若只存储20个狗狗的信息,则造成内存空间浪费 可通过数组名.le

scala集合和Java集合对应转换操作

用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case, scala.collection.Iterable <=> java.lang.Iterable scala.collection.Iterable <=> java.util.Collection scala.collection.Iterator <=> java.util.{ Iterator, Enumeration } scala.collection.mutable.Buff

List集合和Set集合的基本应用

Map集合的基本应用: Map<Integer,Student> map=new HashMap<Integer,Student>(); map.put(1, new Student(1,"张三","男",23)); map.put(2, new Student(2,"里斯","女",21)); map.put(3, new Student(3,"王璐","男",

编译原理-First集合和Follow集合的求法

First集合的求法:    First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集合,由于终结符的First集合就是它自己,所以求出非终结符的First集合后,就可很直观地得到每个字符串的First集合.1.  直接收取:对形如U-a…的产生式(其中a是终结符),把a收入到First(U)中2.  反复传送:对形入U-P…的产生式(其中P是非终结符),应把First(P)中的全部内容传送到First(U)中. Follow集合的求法:    Follow集合是针对

List集合和Set集合UML图总结

1.List和Set,用RationalRose展示 2.Map 原文地址:https://www.cnblogs.com/zhangjianbing/p/8284642.html

java基础33 Set集合下的HashSet集合和TreeSet集合

集合的体系: ---------| collection  单例集合的根接口--------------| List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合中的有序不是指自然顺序,而是指添加进去的顺序与出来的顺序是一致的------------------| ArrayList  ArrayList底层维护了一个object数组的实现的.(线程不安全),特点:查询速度快,增删速度慢.(有序,可重复)------------------| LinkedLi

Java中list集合和set集合遍历的区别

public static void main(String[] args) {        List list=new ArrayList();        list.add(1);        list.add(2);        list.add(2);        list.add(4);        for(Object i:list){            System.out.println(i);        }    } public static void m