zoukankan      html  css  js  c++  java
  • 黑马程序员-集合(一)

    ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

    引用:java.util.Collection

    为什么要出现集合:

    Java是纯面向对象语言,而面向对象语言对事物的体现就是以对象的形式存在的。因此我们想对对象进行操作,就要对对象进行储存,那么聚合就出现了。

    数组和集合类同样是容器。有什么不同?

    数组虽然是可以存储对象,但是长度是固定不变得。集合的长度可以动态改变的。数值是可以存储基本数据类型,集合只能存储对象。(如String)

    集合的构成

    Collection的两个常用子接口

    • List(列表):

    List<E>有序的 collection(也称为序列)。实现此接口可以对每一个列表精确的控制。元素可以重复。因为该集合体系有索引

    ArrayList:底层的数据结构使用的是数组结构,特点:查询速度比很快,但是删除速度稍慢,因底层是数组的数据结构,只能通过角标索取,当我们删除一个元素的时候后面的元素都要向后移动,线程不同步。

    LinkedList:底层使用的链表的数据结构,特点是增删的熟读快。但是查询的速度稍慢。

    Vector:底层是数组数据结构,线程同步。(现在很不用了)

    • Set(集合):

    Set<E>一个不包含重复元素的 collection。set 不包含满足 e1.equals(e2) 的元素对 e1e2,并且最多包含一个 null 元素。

    HashSet:数据结构是哈希表,

    保证元素唯一性的原理,判断hashCode的值是否想相同,如果相同,还会继续判断元素的equal方法,否则返回true

    Treeset:基于 TreeMapNavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。

    底层数据结构是二叉树,保证数据唯一性的依据是:compareTo方法值得return的返回值。

    方法摘要(添加,删除)

    返回值 方法名 解释
    boolean add(E e) 添加对象
    boolean addAll(Collection<? extends E> c) 添加Cllection
    boolean remove(object o) 移出指定元素
    boolean removeAll(Collection<?> c) 移除Collection指定的所元素
    Iterator<E> iterator() 获得两个集合交集的迭代器,就是生成两个集合的相同的元素
    void clerar 删除集合的所有的元素

    获取元素的思路:就是判断和取出 实现Iterable<T>

    所有的集合都需要一些取出方式,所以他们就会有一定的共性,那么我们就把他定义成为在集合的内部,

    那么我们把他定义成为内部类,就可以对集合的元素进行操作。 所以就抽取出了一个

    接口:Iterable<T> (迭代器)ListIterable出现了以后就可以对List集合进行增删除改查。

    实现这个接口允许对象成为 "foreach" 语句的目标

    Iterator<T> interitor() 返回一组T类型上进行迭代的迭代器

    迭代器方法摘要

    boolean hasNext 如果仍然有元素可则返回true
    E next() 返回下一个迭代的元素
    void remove() 从迭代器指向Collection中的元素移除

    改:

    E set(int index ,E element 用指定元素替换列表中指定位置的元素

    List集合当中方法摘要的特别之处:List对象 是有索引的。都带脚标。

    查:

    E get(int index ) 返回列表中指定位置的元素。

    具体放方法的查看,API文档:http://www.w3cschool.cc/manual/jdk1.6/

    迭代器的使用方法

    package com.text;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    
    public class List
    {
        
        public static void main(String[] args)
        {
            //创建长度为10的
            ArrayList lang = new ArrayList();
            lang.add("abc1");
            lang.add("abc2");
            lang.add("abc1");
            lang.add("abc2");
            lang.add("abc1");
            lang.add("abc3");
            lang.add("454");
    
            
        }
        //去除重复元素的方法
        public static ArrayList singleElement( ArrayList al)
        {
            //用到conkd
            ArrayList newAL = new ArrayList();
            //创建查找。 如果第一次存在我我们记录。如果在有同样的内容我们就不添加
            //创建迭代器我们反复的查找
            Iterator it= al.iterator();
            while(it.hasNext())
            {
                Object ob = it.next();
                if (!newAL.contains(ob))
                {
                    //如果新的没有我们就添加。有就不添加
                    newAL.add(ob);
                }
            }
                
            return newAL;
        }
    
    }
  • 相关阅读:
    Java 同步器
    Python: Soft_max 分类器
    【五年】Java打怪升级之路
    关于Csdn水区被占据一事 (2015-08-01)
    Jquery—Jquery中的(function($){...})(jQuery)
    AjaxAnyWhere 实现页面局部刷新,局部分页
    Erlang Port 小心换行
    基于Unity3D云人脸监測技术
    HTML中的超链接
    poj 1979 dfs
  • 原文地址:https://www.cnblogs.com/ganwei/p/4559236.html
Copyright © 2011-2022 走看看