猫哥带你去战斗——Java Web开发——Java篇[4]——常用容器

猫哥直接跳过了类、封装、继承,来讲容器。此处稍微提下需要掌握的,对于类,掌握下面这个最基本的就够了。

public class TypeName{//类名称
    //成员变量定义
    int i;
    string x;
    //成员函数定义
   public int add(){}
}

对于封装、继承甚至后面的接口、抽象类、内部类等Java语法,脱离了应用场景去学习是很飘渺的,所以在以后用到的时候再说明。在目前这个阶段,会定义类,然后实现类的对象,调用类的方法,可以了。

继续本篇的正题:常用容器。猫哥也不过多解释纷繁复杂的继承关系,简单把常用容器分类三类:List、Set、Map。

  • List是有序的元素集,常用的有ArrayList和LinkedList,其中ArrayList有点像数组,查询速度快,插入、删除速度慢。而LinkedList像链表,查询速度稍慢,插入、删除速度较快。List使用get(i)获取第i个元素(i就是顺序),使用add()添加元素。

  • Set是不包含重复元素的元素集。常用的有HashSet和TreeSet,HashSet性能好,比较常用。那还要TreeSet干哈呢,人家TreeSet能排序哦。
  • Map是key-value映射的元素集,也就是说Map中的每个元素包含两个部分,key表示元素的索引键,而value是该键对应的值。所以添加元素是put(key,value),获取元素是get(key),那key不存在get(key)就返回null了。
    常用的类是HashMap。

说白了,List、Set、Map是三种接口,而ArrayList、LinkedList、HashSet、TreeSet、HashMap等是接口的具体实现类。

其实List和Set还是很像的,都是单个元素的元素集,所以他俩其实都有一个最基本的接口即Collection,这个Collection接口的标准非常简单,就是Object的集合,可以包含很多个Object。OK,写一段详细的代码演示下:

import java.util.*;//容器类所在的包得导入进来

/**
 * 容器使用演示
 * @作者 猫哥
 * @编码时间 2016.12.27
 */
public class ContainerDemo {//定义了一个类,用来演示容器的使用

    public static void main(String[] args) {//这个方法是程序的入口
        System.out.println("开始比较ArrayList<String>和ArrayList");
        ArrayList<String> stringList=new ArrayList<String>();//这个ArrayList只能添加String类型元素
        ArrayList objectList=new ArrayList();//这是一个无类型说明的ArrayList,可以添加任意Object

        stringList.add("hello 101");//只能添加String类型的元素
        stringList.add("hello 102");
        System.out.println("遍历输出 stringList");
        for(int i=0;i<stringList.size();i++){
            System.out.println(stringList.get(i));
        }
        System.out.println("foreach输出 stringList 因为里面的元素都是统一的");
        for(String str:stringList){
            System.out.println(str);
        }

        objectList.add(103);//添加不同种类的元素,其实添加的是引用的值
        objectList.add("hello 103");
        System.out.println("遍历输出  objectList");
        for(int i=0;i<objectList.size();i++){
            System.out.println(objectList.get(i));
        }
        System.out.println("foreach输出 objectList ");
        for(Object obj:objectList){
            System.out.println(obj);
        }

        System.out.println("开始演示HashSet和TreeSet");
        HashSet hashSet=new HashSet();
        TreeSet treeSet=new TreeSet();
        hashSet.add("a");
        hashSet.add("b");
        hashSet.add("d");
        hashSet.add("c");
        hashSet.add("a");
        Iterator irhashSet=hashSet.iterator();//Iterator用于遍历
        System.out.println("输出可见a排除重复了,注意HashSet不保存存放时候的顺序");
        while(irhashSet.hasNext()) { 
            System.out.println(irhashSet.next());
        }
        treeSet.add("a");
        treeSet.add("b");
        treeSet.add("d");
        treeSet.add("c");
        treeSet.add("a");
        Iterator irTreeSet=treeSet.iterator();//Iterator用于遍历
        System.out.println("输出可见a排除重复了,TreeSet是有确定顺序的,一般是从小到达,从前到后");
        while(irTreeSet.hasNext()) { 
            System.out.println(irTreeSet.next());
        }

        HashMap hashMap=new HashMap();//key不可重复,value可以
        hashMap.put("学号001", "姓名张三");
        hashMap.put("学号002", "姓名李四");
        hashMap.put("学号003", "姓名张三");
        Iterator irHashMap = hashMap.keySet().iterator();//keySet()把hashMap中的key值整理为set
        while (irHashMap.hasNext()){
            Object key = irHashMap.next();//获取key
            Object val = hashMap.get(key);//获取对应value
            System.out.print(val);
        }
    }

}
点赞