集合类(一): 基础

来源:互联网 发布:手机软件 知乎 编辑:程序博客网 时间:2024/06/05 10:09

一、什么是集合类


 存放对象,集合类位于java.util包内


二、集合和数组的区别


 数组:定长,访问速度快,但不会自动扩容,存放基本数据类型或引用类型
 集合:自动扩容,存放引用类型的对象

 

三、集合框架层次结构
 

四、接口

 

1、Collection 接口
   List和Set的父类


集合类(一): <wbr>基础

2、list 接口
 1)Collection的子类
 2)有序有重复
 3)可以根据序号存取容器中的元素,如a[0]
 4)主要实现类:
  ArrayList : 线性存储,大小可以动态改变
  LinkedLIst :方便增删改,方便实现堆、栈功能

 

3、set接口
 1)Collection的子类
 2)无序无重复
  无序:元素的存入顺序和存储顺序不同
  无重复:指内容不重复
 3)实现类:
  HashSet :按照HashCode()来存储,内部散列存取,速度快
  TreeSet :按照排序树来存储,且要求各元素间的类型是可比较的

4、Iterator 接口
 1)迭代器,方便实现对容器中内的元素进行遍历操作
 2)实现Collection接口的实现类,都要一个iterator()方法,返回iterator接口的对象
 3)为遍历而设计,只有取元素和删除元素,但没有添加元素,单向移动

 


5、Map 接口
 1) Map存储 key-value 的对象
 2) key值是唯一,key与value 对象关联在一起
 3) 实现类
        HashMap:key-value是按Hash算法存储
        TreeMap: key-value是按key排序存储

 

五、如何选择集合类

 

 1、Set内存放的元素不允许重复,List存放的元素有一定的顺序。
 2、Map的应用主要在利用键/值对进行快速查询。
 3、ArrayList和LinkedList的区别在于随机查询性能上ArrayList要好,但LinkedList的中间元素的插入与删除性能好。 
 4、HashSet和TreeSet的区别在于集合内元素是否排序 。


六、实例
1、ArrayList
  ArrayList list = newArrayList();
  list.add("a");
  list.add("c");
  list.add("b");
  System.out.println(list);  //输出结果a,b,c 


2、转换为iterator迭代器

  //将实现Collection接口的ArrayList转换为迭代器,
  Iterator i =list.iterator(); 
  i.next(); //移动下一个
  i.remove(); //删除
  
  //循环遍历,输出结果 c、b
  while(i.hasNext()){
   System.out.println(i.next());   
  }


3、TreeSet
  TreeSet tree = newTreeSet();
  tree.add("2");
  tree.add("1");
  tree.add("4");
  tree.add("3");   
  System.out.print(tree);  //[1, 2, 3, 4]


4、HashMap
  HashMap h = newHashMap();
  h.put("小明","123" );
  h.put("小红", "456");
  System.out.println(h);

 

0 0