zoukankan      html  css  js  c++  java
  • 69期-Java SE-015_集合-1-001-002

    ### Collection
    
    接口,一个Collection存储一组无序、不唯一的对象,一般不会直接使用该接口。
    
    Collection 常用方法
    
    - int size()                                    获取集合的长度
    - boolean isEmpty()                                                       判断集合是否为空
    - boolean contains(Object o)                                       判断集合中是否存在某个对象
    - Iterator<E> itertor()                                                    实例化Iterator接口,遍历集合
    - Object[] toArray()                                                         将集合转换为一个Object类型的数组
    - boolean add(Object o)                                                向集合中添加元素
    - boolean remove(Object o)                                         从集合中删除元素
    - boolean containsAll(Collection c)                              判断集合中是否存在某个集合的所有元素
    - boolean addAll(Collection c)                                      向集合中添加某个集合的所有元素
    - boolean removeAll(Collection c)                               从集合中移除某个集合的所有元素
    - void clear()                                                                    清空集合,删除集合中的所有元素
    - boolean equals(Object o)                                           比较两个集合是否相等
    - int hashCode()                                                             返回集合的hash值
    
    ### Collection 的子接口
    
    - List:存放有序、不唯一的元素。
    - Set:存放无序、唯一的元素。
    - Queue:队列集合。
    
    #### List接口
    
    List是Collection主要的子接口,一个List可以存储一组有序、不唯一的对象。
    
    List接口在继承Collection接口的基础之上,进行啦了方法扩展。
    
    - Object get(int index)                                            通过下标获取集合中指定位置的元素。
    - Object set(int index,Object o)                            向集合中指定位置添加元素,如果该位置已存在某个元素,则直接替换
    - int indexOf(Object o)                                           查找某个对象在集合中的具体位置
    - ListIterator<E> listIterator()                               实例化ListIterator对象
    - List<E> subList(int fromIndex,int toIndex)      根据两个指定的下标获取集合的子元素
    
    #### List接口的实现类
    
    - ArrayList 
    
    ArrayList 的特点是查询元素效率很高,只需要通过寻址地址和下标即可快速定位到目标元素,缺点是添加或删除元素,效率很低,因为要移动兄弟元素的位置。
    
    ```java
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    public class Test {
        public static void main(String[] args) {
            ArrayList arrayList = new ArrayList();
            arrayList.add("Hello");
            arrayList.add("World");
            arrayList.add("JavaSE");
            arrayList.add("JavaME");
            arrayList.add("JavaEE");
            System.out.println("list:"+arrayList);
            System.out.println("list的长度是:"+arrayList.size());
            System.out.println("list是否包含Java:"+arrayList.contains("Java"));
            for(int i=0;i<arrayList.size();i++) {
                System.out.println(arrayList.get(i));
            }
            Iterator iterator = arrayList.iterator();
            while(iterator.hasNext()) {
                String item = (String)iterator.next();
                System.out.println(item);
            }
            arrayList.remove("World");
            System.out.println(arrayList);
            arrayList.remove(3);
            System.out.println(arrayList);
            arrayList.add(1, "SQL");
            System.out.println(arrayList);
            int index = arrayList.indexOf("JavaSE");
            System.out.println(index);
            List list = arrayList.subList(1, 3);
            System.out.println(list);
        }
    }
    ```
    
    Vector 是一个早期的List实现类,用法基本与ArrayList一致。Stack 是 Vector 的一个子类,实现了"后进先出"的栈。
    
    ```java
    import java.util.Vector;
    
    public class Test2 {
        public static void main(String[] args) {
            Vector vector = new Vector();
            vector.addElement("Hello");
            vector.add("World");
            for(int i=0;i<vector.size();i++) {
                System.out.println(vector.get(i));
            }
        }
    }
    ```
    
    ```java
    import java.util.Stack;
    
    public class Test3 {
        public static void main(String[] args) {
            Stack stack = new Stack();
            stack.push("Hello");
            stack.push("JavaSE");
            stack.push("JavaME");
            stack.push("JavaEE");
            System.out.println(stack);
            for(int i=0;i<stack.size();i++) {
                System.out.println(stack.get(i));
            }
            System.out.println("栈顶元素:"+stack.peek());
            System.out.println(stack);
            System.out.println("栈顶元素:"+stack.pop());
            System.out.println(stack);
        }
    }
    ```
    
    LinkedList 实现了一个"先进先出"的队列,采用链表的形式存储分散的内存空间,
    
    ```java
    import java.util.LinkedList;
    
    public class Test4 {
        public static void main(String[] args) {
            LinkedList list = new LinkedList();
            list.add("Hello");
            list.add("World");
            list.add("Java");
            System.out.println(list);
            list.offer("JavaSE");
            System.out.println(list);
            list.addLast("JavaSE2");
            System.out.println(list);
            list.push("JavaME");
            System.out.println(list);
            list.addFirst("JavaME2");
            System.out.println(list);
            System.out.println("第一个元素是:"+list.peek());
            System.out.println(list);
            System.out.println("最后一个元素是:"+list.peekLast());
            System.out.println(list);
            System.out.println(list.pop());
            System.out.println(list);
        }
    }
    ```
    
    PriorityQueue 在使用的时候需要注意,添加到该队列中的数据必须有序,即对象具备排序的功能。
    
    ```java
    import java.util.PriorityQueue;
    
    public class Test5 {
        public static void main(String[] args) {
            PriorityQueue queue = new PriorityQueue();
            queue.add(new A(2));
            queue.add(new A(1));
            System.out.println(queue);
        }
    }
    
    class A implements Comparable{
        private int num;
        public A(int num) {
            this.num = num;
        }
        /**
         * A.compareTo(B)
         * 1表示A大于B
         * 0表示A等于B
         * -1表示A小于B
         */
        @Override
        public int compareTo(Object o) {
            // TODO Auto-generated method stub
            A a = (A)o;
            if(this.num > a.num) {
                return 1;
            }else if(this.num == a.num) {
                return 0;
            }else {
                return -1;
            }
        }
        @Override
        public String toString() {
            return "A [num=" + num + "]";
        }
    }
    ```

    Test.java

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    public class Test {
        public static void main(String[] args) {
            ArrayList arrayList = new ArrayList();
            arrayList.add("Hello");
            arrayList.add("World");
            arrayList.add("JavaSE");
            arrayList.add("JavaME");
            arrayList.add("JavaEE");
            arrayList.add(null);
            System.out.println("list:"+arrayList);
            System.out.println("list的长度是:"+arrayList.size());
            System.out.println("list是否包含Java:"+arrayList.contains("Java"));
            for(int i=0;i<arrayList.size();i++) {
                System.out.println(arrayList.get(i));
            }
            Iterator iterator = arrayList.iterator();
            while(iterator.hasNext()) {
                String item = (String)iterator.next();
                System.out.println(item);
            }
            arrayList.remove("World");
            System.out.println(arrayList);
            arrayList.remove(3);
            System.out.println(arrayList);
            arrayList.add(1, "SQL");
            System.out.println(arrayList);
            int index = arrayList.indexOf("JavaSE");
            System.out.println(index);
            List list = arrayList.subList(1, 3);
            System.out.println(list);
        }
    }

    Test2.java

    import java.util.Vector;
    
    public class Test2 {
        public static void main(String[] args) {
            Vector vector = new Vector();
            vector.addElement("Hello");
            vector.add("World");
            for(int i=0;i<vector.size();i++) {
                System.out.println(vector.get(i));
            }
        }
    }

    Test3.java

    import java.util.Stack;
    
    public class Test3 {
        public static void main(String[] args) {
            Stack stack = new Stack();
            stack.push("Hello");
            stack.push("JavaSE");
            stack.push("JavaME");
            stack.push("JavaEE");
            System.out.println(stack);
            for(int i=0;i<stack.size();i++) {
                System.out.println(stack.get(i));
            }
            System.out.println("栈顶元素:"+stack.peek());
            System.out.println(stack);
            System.out.println("栈顶元素:"+stack.pop());
            System.out.println(stack);
        }
    }

    Test4.java

    import java.util.LinkedList;
    
    public class Test4 {
        public static void main(String[] args) {
            LinkedList list = new LinkedList();
            list.add("Hello");
            list.add("World");
            list.add("Java");
            System.out.println(list);
            list.offer("JavaSE");
            System.out.println(list);
            list.addLast("JavaSE2");
            System.out.println(list);
            list.push("JavaME");
            System.out.println(list);
            list.addFirst("JavaME2");
            System.out.println(list);
            System.out.println("第一个元素是:"+list.peek());
            System.out.println(list);
            System.out.println("最后一个元素是:"+list.peekLast());
            System.out.println(list);
            System.out.println(list.pop());
            System.out.println(list);
            
        }
    }

    Test5.java

    import java.util.PriorityQueue;
    
    public class Test5 {
        public static void main(String[] args) {
            PriorityQueue queue = new PriorityQueue();
            queue.add(new A(2));
            queue.add(new A(1));
            System.out.println(queue);
        }
    }
    
    class A implements Comparable{
        private int num;
        public A(int num) {
            this.num = num;
        }
        /**
         * A.compareTo(B)
         * 1表示A大于B
         * 0表示A等于B
         * -1表示A小于B
         */
        @Override
        public int compareTo(Object o) {
            // TODO Auto-generated method stub
            A a = (A)o;
            if(this.num > a.num) {
                return 1;
            }else if(this.num == a.num) {
                return 0;
            }else {
                return -1;
            }
        }
        @Override
        public String toString() {
            return "A [num=" + num + "]";
        }
    }
  • 相关阅读:
    支持nmap批量漏洞扫描的script
    Linux学习路径(小白必看)
    SEED实验系列:Collabtive系统SQL注入实验
    SEED实验系列:ShellShock 攻击实验
    SEED信息安全实验系列:缓冲区溢出漏洞实验
    SEED实验系列:缓冲区溢出漏洞试验
    信息安全不可错过的30门实验
    SEED实验系列文章目录
    Laravel大型项目系列教程(七)之7 扩展包和Artisan开发
    laravel大型项目系列教程(六)之优化、单元测试以及部署
  • 原文地址:https://www.cnblogs.com/HiJackykun/p/11172930.html
Copyright © 2011-2022 走看看