集合框架

来源:互联网 发布:c语言头文件是什么意思 编辑:程序博客网 时间:2024/06/07 03:44

Map接口常用用法

 

方法名

说明

Object put(Object key, Object val)

以“键-值对”的方式进行储存

Object get(Object key)

根据键返回相关联的值,如果不存在指定的键,返回null

Object remove(Object key)

删除由指定的键映射的“键-值对

int size()

返回元素的个数

Set keySet()

返回键的集合

Collection values()

返回值的集合

booleancontainsKey(Object key)

如果存在由指定的键映射的“键-值对”,返回true

 

LinkedList 的一些特殊用法

 

方法名称

说明

void addFirst(Object 0)

在列表的首部添加元素

void addLast(Object 0)

在列表的末尾添加元素

Object getFirst()

返回列表中的第一个元素

Object geiLast()

返回列表中的最后一个元素

Object removeFirst()

删除并返回列表中的第一个元素

Object removeLast()

删除并返回列表中的最后一个元素

 

HashSet 类的常用用法

 

方法名称

说明

boolean add(Object 0)

如果该Set中尚未包含指定元素,则添加指定元素

void clear()

Set中移除所有元素

int size()

返回此Set中元素的数量(Set的容量)

boolean is Empty()

如果此Set不包含任何元素,则返回true

boolean contains(Object 0 )

如果此Set包含指定元素,则返回true

boolean remove(Object 0 )

如果指定元素存在于此Set中,则将其移除

 

Vector ArrayList 的异同

实现原理、功能相同,可以互用

主要区别:

Vector线程安全,ArrayList重速度轻安全,线程非安全

长度需增长时,Vector默认增长一倍,ArrayList增长50%

 

Hashtable HashMap的异同

实现原理、功能相同,可以互用

主要区别:

Hashtable继承Dictionary类,HashMap实现Map接口

Hashtable线程安全,HashMap线程非安全

Hashtable不允许null值,HashMap允许null

 

list 常用方法:

  • 默认添加:list.add(e);
  • 指定下标添加(添加后下标后的元素向后挪一位):list.add(index,e);
  • 获得集合内元素个数:list.size();
  • 返回是否删除:list.remove(e);
  • 直接删除指定下标的元素(只删除找到的第一个相符合的元素):list.remove(index);
  • 替换元素(替换掉指定下标的元素):list.set(index,e);
  • 取出元素:list.get(index);
  • 清空集合:list.clear();
  • 判断集合中是否存在某个元素(存在返回true,不存在返回false):list.contains(e);
  • 两个对象一定相等:list.equals(list2);
  • 两个对象不一定相等:list.hashCode() == list2.hashCode();
    (两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象。
  • 元素存在则返回找到的第一个元素的下标,不存在则返回-1:list.indexOf(e);
  • 元素存在则返回找到的最后一个元素的下标,不存在则返回-1:list.lastIndexOf(e);
  • 判断集合是否为空(空则返回true,非空则返回false):list.isEmpty();
  • 返回Iterator集合对象:list.iterator();
    • List<String> list = new ArrayList<String>();
      list.add("1234");
      list.add("12345");
      list.add("12346");
      list.add("12347");
      list.add("12348");
      Iterator<String> it = list.iterator();//遍历用
      while(it.hasNext()){
      System.out.println(it.next());
      }
  • 将集合转换为字符串:list.toString();
  • 将集合转换为数组:
    默认类型:list.toArray();
    指定类型(objects为指定类型的数组对象,并将转换好的数组赋值给objects数组):list.toArray(objects);
  • list遍历方法     
  • public static void main(String[] args) {
             List<String> list=new ArrayList<String>();
             list.add("aa");
             list.add("bb");
             list.add("cc");
             list.add("dd");
             //List的第一种遍历法
             for(String str:list){
              System.out.print(str+" ");
              //打印 aa bb cc dd
             }
             System.out.println();
           //List的第二种遍历法
             for(int i=0;i<list.size();i++){
              if(i!=list.size()-1){
               System.out.print(list.get(i)+" ");
               //这个remove(i)是移除上面打印的,
               list.remove(i);
              }else{
               System.out.print(list.get(i));
              }
              //打印为aa cc 
             }
           //List的第三种遍历法
             System.out.println();
             for(Iterator<String> iterator=list.iterator();iterator.hasNext();){
              if(iterator.hasNext()){
               System.out.print(iterator.next()+" ");;
              }else{
               System.out.print(iterator.next());; 
              }
             }
             //打印aa bb cc dd 
     }

 

rrayList和LinkedList的特点
rrayList


ArrayList其实是包装了一个数组 Object[],当实例化一个ArrayList时,一个数组也被实例化,当向ArrayList中添加对象是,数组的大小也相应的改变。这样就带来以下有缺点:
快速随即访问 你可以随即访问每个元素而不用考虑性能问题,通过调用get(i)方法来访问下标为i的数组元素。
向其中添加对象速度慢 当你创建数组是并不能确定其容量,所以当改变这个数组时就必须在内存中做很多事情。
操作其中对象的速度慢 当你要想数组中任意两个元素中间添加对象时,数组需要移动所有后面的对象。

LinkedList
LinkedList是通过节点直接彼此连接来实现的。每一个节点都包含前一个节点的引用,后一个节点的引用和节点存储的值。当一个新节点插入时,只需要修改其中保持先后关系的节点的引用即可,当删除记录时也一样。这样就带来以下有缺点:
操作其中对象的速度快 只需要改变连接,新的节点可以在内存中的任何地方
不能随即访问 虽然存在get()方法,但是这个方法是通过遍历接点来定位的所以速度慢。

说白了,就是数据结构中的顺序存储和链式存储

原创粉丝点击