zoukankan      html  css  js  c++  java
  • Collection集合

    Collection集合:

              存储的都是value,位于java.util包。

            List: (有序、元素允许重复)

         ArrayList:

            ArrayList继承AbstractList<E>,实现的接口为:List<E>, RandomAccess, Cloneable, java.io.Serializable,是我们开发中非常常用的数据存储容器之一,其底层是                                            利用(动态)数组形式实现的,JDK1.5,可以在集合中存储任意类型的数据。ArrayList是线程不安全的,非常适合用于对元素进行查找,效率非常高。默认1.5倍扩容。

            常用方法:add(E e)      remove(index)     set(index value)     get(index)        size()

            ArrayList优缺点:

            优点:1.因为其底层是动态数组形式实现,所以修改和查询效率高。

               2.可自动扩容(1.5倍)。

            缺点:1.插入和删除效率不高。

               2.线程不安全。

         Vector类:

            是ArrayList集合的早期版本,JDK1.0,底层也是利用动态数组形式存储的。Vector是线程同步的(synchronized),安全性高,效率低,其默认的扩容是2倍,可                                             以通过构造方法创建时修改这一机制。Vector继承AbstractList<E>,实现的接口为:List<E>, RandomAccess, Cloneable, java.io.Serializable。

          LinkedList:

            LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的,是线程不安全的,允许元素为null的双向链表。LinkedList适合用于插入或删                除,不适合遍历轮询。LinkedList继承AbstractSequentialList<E>,实现接口:List<E>, Deque<E>, Cloneable, java.io.Serializable。

           常用方法:add()     remove()     set()     get()     size()

           LinkedList的优缺点:

            优点:1.不需要扩容和预留空间,空间效率高。

               2.增删效率高。

            缺点:1.随机访问时间效率低。

               2.改查效率低。

      set: (无序,元素不可重复)

           无序:添加的顺序与获取的顺序不一致(不是集合本身是否有序,Tree自然有序)。

           无重复:添加的元素不能一致(如果出现重复元素,只存第一个,不再存入其他的)。

           常用方法: add(E e)     remove(E e)     iterator迭代器(增强for)    size()

                         HashSet(HashMap--->数据存储结构,散列表):

                                         HashSet继承AbstractSet<E>,实现的接口为:Set<E>, Cloneable, java.io.Serializable。

                               HashSet无重复原则有两个方法同时起作用equals()和hashCode(),默认比较的是两个对象的地址,若第二个对象地址与之前的一致,不再存入;如果想要改变 其比较的规                               则,可以重写上述的两个方法。下面的例子重写了equals()和hashCode()。

     

    HashSet<Question> questionSet = new HashSet<Question>();

     

    public class Question {
    
        private String title;
        private String answer;
        
        public Question(String title, String answer){
            this.title = title;
            this.answer = answer;
        }
        
        public boolean equals(Object obj){
            if(this == obj){
                return true;
            }
            if(obj instanceof Question){
                Question question = (Question)obj;
                String[] questionStr = question.getTitle().split("?");
                String anotherTitleStr = questionStr[0];
                String titleStr = this.title.split("?")[0];
                if(!titleStr.isEmpty() && !anotherTitleStr.isEmpty() && titleStr.equals(anotherTitleStr)){
                    return true;
                }
            }
            
            return false;
        }
        
        public int hashCode(){
            return this.title.hashCode();
        }
    
        public String getTitle() {
            return title;
        }
    
        public String getAnswer() {
            return answer;
        }
    
    }

     

                        TreeSet(TreeMap--->数据存储结构,二叉树):

            TreeSet继承AbstractSet<E>,实现的接口为:NavigableSet<E>, Cloneable, java.io.Serializable。

            TreeSet无重复原则有一个方法起作用compareTo(),上述的这个方法不是每一个对象都有的,若想要将某一个对象存入TreeSet集合中,需要让对象所属的类实现接口                         Comparable,实现接口后将comparTo()方法重写,返回值int,负数靠前排列,整数靠后排列。

  • 相关阅读:
    菜鸟攻城狮4(基本语法)
    Spring 3.x 企业引用开发实战(陈雄华/林开雄)
    进击的菜鸟问题1(设置checkbox全选)
    Maven实战
    菜鸟攻城狮3(Holle World)
    菜鸟攻城狮2(JAVA开发环境)
    git基本使用
    跨域问题及解决跨域的方案
    原生ajax相关概念
    php服务器语言,MySQL数据库以及php怎么操作数据库
  • 原文地址:https://www.cnblogs.com/huangcc/p/11436204.html
Copyright © 2011-2022 走看看