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

Thinking in Java——集合(Collection)

时间:2016-05-19 18:56:23      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

一、ArrayList的使用(略)

二、容器的基本概念

(一)、Collection是集合类的基本接口

主要方法:

public interface Collection<E>{
  boolean add(E element);//向集合中添加元素,E代表泛型
  Iterator<E> iterator();//返回实现了Iterator接口的对象
}

关于:Iterator之后讲解。

(二)、实现了Collection的子类:

List:按照顺序插入保存元素。                  Set:该容器内不能有重复的元素                     Queue:按照队列的规则决定对象的顺序

(三)、Map接口

定义:一组成对的“键值对”对象,使用key查找value

注:这是单独的接口,不属于Collection

(四)、根据上诉分析使用容器

1、ArrayList向上转型为Collection,并通过Collection添加处理数据。(运用到的技术:父类引用指向子类对象,调用子类的方法)

技术分享
public class UpToCollection {
    public static void main(String [] args){
        ArrayList<Integer> arrayList = new ArrayList();
        for(int i=0; i<5; ++i){
            arrayList.add(i);
        }
        Collection<Integer> collection = arrayList;
        collection.add(5);
        //这里使用了foreach循环,只要实现了Iterator接口就能够使用foreach
        //Collection没有List的get方法,需要用Iterator来进行遍历
        for(Integer i: collection){
            System.out.println(i);
        }
    }
}
View Code

2、添加一组元素

技术分享
public class AddElementToCollection {
    public static void main(String[]args){
        
        Collection<Integer> collection = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6));
        //知识点1:利用Arrays这个静态类,将数组,或者一列数字转换为List
        //知识点2:ArrayList可以嵌套List创建
        /*知识点3:为什么不可以Collection<Integer> collection = 
         * Arrays.asList(1,2,3,4,5,6);,发现创建并没有问题,但是到下文的时候使用
         * collection.addAll(Arrays.asList(datas));是会报错的
         * 原因:因为Arrays.asList(1,2,3,4,5,6)创建的List是固定长度的List
         * 所以是无法执行add()方法的。
         */
        Integer [] datas = {7,8,9,10};
        /*知识点4:必须使用Integer作为类,不能使用int,否则会报错
         *因为之前Collection<Integer> collection,已经将泛型定为Integer
         *所以不能使用引用类型,得到输入的泛型是什么,就需要建立什么类的数组
        */
        collection.addAll(Arrays.asList(datas));
        for(Integer i: collection){
            System.out.println(i);
        }
        //上文为通过Collection往List中添加一组数据(数组,或者自定义的数据),下文介绍另一种方法
        
        Collections.addAll(collection, 11,12,13,14,15,16);
        Collections.addAll(collection, datas);
        //注:这是Collections类不是Collection类
    }
}
AddElementToCollection

Collection添加元素的方法  优点:方法运行效率快。  缺点:但是需要创建一个Collection类,来作为对象

Collections添加元素的方法 优点:方便,不需要创建Collection类。

3、Collection类型的作用:统一类型添加,删除。。。(统一遍历是由Iterator确定的)

技术分享
public class CollectionEffect {
    //统一各种容器,只需要一种方法就能添加,删除
    public static void main(String[] args){
        print(fill(new ArrayList<String>()));
        print(fill(new HashSet<String>()));
        print(fill(new HashMap<String,String>()));
    }
    //Collection接口的集合
    public static Collection<String> fill(Collection<String> c){
        c.add("dog");
        c.add("cat");
        c.add("pig");
        return c;
    }
    //重载fill方法,提供Map接口
    public static Map<String,String> fill(Map<String,String> map){
        map.put("dog", "pig");
        map.put("cat","small");
    
        return map;
    }
    
    public static void print(Collection<String> c){
        
    }
    
    public static void print(Map<String,String> map){
        
    }
}
CollectionEffect

三、迭代器(Iterator)

作用:统一遍历各种容器

接口方法:

技术分享
public interface Iterator<E>{
  E next();//获取下一个元素
  boolean hasNext();//查看是否存在下一个元素
  void remove();//移除元素
}
Iterator

 

Thinking in Java——集合(Collection)

标签:

原文地址:http://www.cnblogs.com/rookiechen/p/5509546.html

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