码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA集合

时间:2016-07-09 13:18:25      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:

为了保存数量不确定的数据或者提供映射关系的数据,Java提供了集合类,也称作集合类,Collection和Map分别为两个根接口。两个接口体系的继承系如下图技术分享

(图片来源于网络)

 

Collection接口下有List、Set、Queue三个子接口(着重讲前两个接口)。Collection定义了如下一些操作集合的方面:

  • boolean add(Object o) //向集合中添加一个元素,添加成功返回true
  • boolean addAll(Collection c) //把集合c中的所有元素添加到指定集合,添加成功返回true
  • boolean remove(Object o)  //删除元素O,当集合中有多个元素O时,只删除第一个符合条件的元素,返回true
  • boolean removeAll(Collection c) //从集合中删除集合C中包含的所有元素
  • void clear() //清除集合中的所有元素
  • Iterator iterator //返回一个Iterator对象,用于变量集合里的元素
  • Object[] toArray() //将集合元素变成数组元素
  • int size()   //返回集合中元素的个数

 Set接口的所含有元素不能重复。Set常用的几个实现类

HashSet     无序地遍历成员,成员可为任意Object子类的对象,但如果覆盖了equals方法,同时注意修改hashCode方法。
LinkedHashSet HashSet的一个子类,按元素添加顺序访问集合中的元素。
TreeSet SortSet接口的实现类,支持子集等按要求顺序的操作
EnumSet 枚举类集合,所有元素必须是同一枚举类的枚举值,

  Set实现类性能比较:HashSet的性能比TreeSet的性能要好,TreeSet需要维持元素次序带来的开销。HashSet的子类LinkedHashSet,插入删除性能比HashSet要差一点,需要维持链表带来的开销,但是遍历的时候因为有链表,所以比HashSet稍快。EnumSet的性能最好的,就是有元素必须是同一个枚举类的局限性。这几个实现类都是线程不安全,同时访问需要自己保证Set集合的同步性。

List接口:List集合是一个元素有序、元素可以重复的集合,元素都有对应的索引值。

  •   void add(int index,Object element) // 将元素element插入到index索引处
  •   Object get(int index) //返回index索引出的元素
  •   int indexOf(Object o) //返回对象o在List中第一次出现的位置索引
  •  Object set(int index,Object element) //将index索引出的元素换成element

     ArrayList实现类封装了一个动态的、允许再分配的Object[]数组。提供了两个方法重新分配Object[]数组。

    void ensureCapacity(int minCapacity) //增大minCapacity大小的数组长度

    void trimToSize()  //调整集合的数组长度为当前元素的个数

    ArrayList例子

 1 public static void main(String[] args){
 2         List<String> books=new ArrayList<>();
 3         books.add(new String("第一本"));
 4         books.add(new String("第二本"));
 5         books.add(new String("第三本"));
 6         books.add(new String("第四本"));
 7         Iterator<String> it=books.iterator();
 8         while(it.hasNext()){
 9             String book=it.next();
10             System.out.println(book);
11             if(book.equals("第三本"))
12             {
13                 it.remove();
14             }
15         }
16         System.out.println(books);
17         
18     }

集合遍历问题

  一、for循环遍历  

1 public class CollectionTraversalFor {
2     public void forr(List<String> list){
3         for(int i=0;i<list.size();i++){
4             String book=list.get(i);
5             System.out.println(book);
6         }
7     }
8 }

  二、foreach遍历

1 public class CollectionTraversalForeach {
2     public void Foreach(List<String> list){
3         for(String a :list){
4             System.out.println(a);
5         }
6     }
7 }

  三、Iterator遍历

1 public class CollectionTraversalIterator {
2     public void iterator(List<String> list){
3         Iterator it=list.iterator();
4         while(it.hasNext()){
5             String book=(String) it.next();
6             System.out.println(book);
7         }
8     }
9 }

 

Map接口

    Map集合用于保存具有映射关系的数据,有两组值,一组是key,另一组是value。

  Hashmap 是一个 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。

 

JAVA集合

标签:

原文地址:http://www.cnblogs.com/tony2016/p/5654985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!