java集合类详解

作者: 在南方的北方人_Elijah | 来源:发表于2017-02-26 02:57 被阅读622次

    Collection

    • 集合可以理解为一个动态的对象数组,不同的是对象内容可以任意扩充
    • 集合的特点:
      性能高
      容易扩展和修改
    • Collection的常用子类
      List
      Set
      Queue

    List

    • List接口可以存放人意的数据,而且List接口中内容是可以重复的
    • List接口常用子类:
      ArrayList
      Vector
      -常用操作
      判断集合是否为空 boolean isEmpty()
      查找制定的对象是否存在:int indexOf(Object o)

    demo

    package com.test.CollectionDemo;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Vector;
    
    /**
     * Created by elijahliu on 2017/2/26.
     */
    public class CollectionDemo {
    
        public static void main(String[] args) {
            List<String> list = new ArrayList<String>();
            list.add("a");
            list.add("b");
            list.add("a");
            for (String i:list) {
                System.out.println(i);
            }
    
            list.remove(0);//delete
            System.out.println(list.indexOf("a"));//search a
    
            System.out.println(list.isEmpty());
        }
    
        //vectordemo
        public static void ListDemo2(){
            List<String> list = new Vector<String>();
            list.add("a");
            list.add("b");
            for (String i : list
                    ) {
                System.out.println(i);
            }
        }
    }
    
    

    ArrayList和Vector比较

    比较 ArrayList Vector
    推出时间 JDK1.2之后推出 JDK1.0之后推出
    性能 采用异步处理的方式,性能高 采用同步处理的方式,性能低
    线程安全 属于非线程安全 属于线程安全

    Set

    • set接口中不能加入重复元素,但是可以排序
    • 常用子类
      散列存放:HashSet
      有序存放:TreeSet

    demo

    public static void setDemo() {
    
            Set<String> s = new HashSet<>();
            s.add("a");
            s.add("b");
            s.add("c");
            s.add("d");
            s.add("d");
            s.add("e");
            System.out.println(s);
    
            s = new TreeSet<String>();
            s.add("a");
            s.add("c");
            s.add("b");
            s.add("d");
            s.add("d");
            s.add("e");
            System.out.println(s);//打印出来是有序的
    
        }
    

    Iterator

    • 集合输出的标准输出
      标准做法,使用Iterator接口
    • 操作原理
      Iterator是专门的迭代输出接口,迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有则把内容取走
    过程

    demo

        public static void IteratorDemo() {
            List<String> list = new ArrayList<String>();
            list.add("a");
            list.add("c");
            list.add("b");
            list.add("d");
            list.add("d");
            list.add("e");
    
            Iterator<String> iter = list.iterator();
            //这里实例话Iterator有点不同,是通过要进行迭代的实例话对象调用iterator方法来进行实例化的
            while (iter.hasNext()) {
                System.out.println(iter.next());
            }
            //hasNext()判断是否下一个元素为空,next()用于获取下一个元素
    
        }
    

    ps:不能在迭代输出的时候进行iter.remove()删除操作,会报错

    Map

    • 保存形式:
      key——>value的方式保存
      例子:小明:12312132
    • 常用字类:
      HashMap:无序存放,Key不允许重复
      Hashtable:无需存放,Key不允许重复

    demo

        public static void mapDemo() {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("1", 1);
            map.put("2", 2);
            map.put("3", 3);
            map.put("4", 4);
    
            int i = (int) map.get("3");//提取键值
    
            boolean isKey = map.containsKey("1");//看key是不是存在 返回boolean
            boolean isValue = map.containsValue(1);//看value是不是存在,返回boolean
    
            Set<String> s =map.keySet(); //map.keySet()可以将所有的键都提取出来,返回的是一个Set集合
            //map.values()返回所有值,返回是一个Collection 集合
            Iterator<String> itr= s.iterator();//使用set集合调用迭代器Iterator来进行输出
    
            while (itr.hasNext()) {
                System.out.println(itr.next());
            }
        }
    

    相关文章

      网友评论

      • Barnabas1:讲的比较简略,对于初学者在用的过程中会有一些帮助

      本文标题:java集合类详解

      本文链接:https://www.haomeiwen.com/subject/aqfowttx.html