JavaSE学习笔记——基本数据结构

  • BitSet类

    1. BitSet,也就是位图,可以用比较紧凑的格式来表示给定范围的连续数据,
      最常见的应用就是那些需要对海量数据进行一些统计工作的时候,比如日志分析等。
      又或者统计40亿个数据中没有出现的数据、将40亿个不同数据进行排序等。

    2. 构造方法

      BitSet bs = new BitSet();//创建一个默认BitSet对象
      BitSet bs = new BitSet(16);//创建一个包含16位Set的对象,默认所有位均为false
      
    3. 常用方法

      void and(BitSet set);
      //将当前Set与参数中的Set按位进行逻辑与运算
      void or(BitSet set);
      //将当前Set与参数中的Set按位进行逻辑或运算
      void xor(BitSet set);
      //将当前Set与参数中的Set按位进行逻辑异或运算
      void andNot(BitSet set);
      //set中指定为true的位,如果在当前Set中也出现了,
      //此方法就会在当前Set中删除这个位
      
      void clear();
      //将此BitSet中所有位设置为false
      void clear(int  index);
      //将此BitSet中索引指定位置设置为false
      void clear(int startIndex, int endIndex);
      //将[startIndex,endIndex)范围内的位设置为false,注意左闭右开
      
      void Set(int index);
      //将指定索引位设置为true
      void Set(int index, boolean v);
      //将指定索引位值设置为指定的值
      void Set(int startIndex, int endIndex);
      //将[startIndex,endIndex)范围内的位设置为true
      void Set(int startIndex, int endIndex, boolean v);
      //将[startIndex,endIndex)范围内的位设置为指定的值
      
      void flip(int index);
      //将指定索引处的位设置为其当前值的补码
      void flip(int startIndex, int endIndex);
      //将[startIndex,endIndex)范围内的位设置为其当前值的补码,注意左闭右开
      
      boolean get(int index);
      //返回指定索引处的值
      BitSet get(int startIndex, int endIndex);
      //返回一个新的BitSet,它由[startIndex,endIndex)范围内的位组成
      int nextClearBit(int startIndex);
      //返回从startIndex开始的第一个false位的索引
      int nextSetBit(int startIndex);
      //返回从startIndex开始的第一个true位的索引
      
      boolean isEmpty();
      //若此BitSet中没有包含任何设置为true的位,返回true,否则返回false
      int length();
      //返回此BitSet的“逻辑大小”
      int size();
      //返回此BitSet表示位值时实际使用空间的位数
      int cardinality();
      //返回当前BitSet中设置为true的位数
      
  • vector类

    1. 本质上vector实现了一个动态数组,类似于ArrayList,
      但是两者间存在区别:Vector是同步访问的,
      并且Vector内部包含很多方法,这些方法不属于集合

    2. 构造方法

      Vector v = new Vector();//创建一个默认的向量,默认大小为10
      Vector v = new Vector(int size);//创建指定大小的向量
      Vector v = new Vector(int size, int incr);//创建指定大小的向量,增量指定为incr(vector每次增加的元素数目)
      Vector v = new Vector(Collection c);//
      
    3. 向Vector中添加数据的方法

      void add(int index, Object element);
      //在此向量的指定位值插入指定对象
      boolean add(Object o);
      //将指定对象添加到此向量的末尾
      boolean addAll(Collection c);
      //将指定 Collection 中的所有元素添加到此向量的末尾,按照指定 collection 的迭代器所返回的顺序添加这些元素。
      boolean addAll(int index, Collection c);
      //在指定位置将Collection中所有元素插入此向量中
      void addElement(Object obj);
      //将指定对象添加到此向量的末尾,将其大小增加1
      void insertElementAt(Object obj, int index);
      //将指定对象作为此向量的组件插入到指定index处
      
    4. 从Vector中删除数据的方法

      void clear()
      //从此向量中移除所有元素
      Object remove(int index)
      //移除此向量中指定位置的元素
      boolean remove(Object o)
      //移除指定对象在此向量中的第一个匹配项,若此向量不包含该对象,则保持不变
      boolean removeAll(Collection c)
      //从此向量中移除指定Collection中包含的所有元素
      void removeAllElements()
      //从此向量中移除所有组件并将其大小设置为0
      boolean removeElement(Object obj)
      //从此向量中,移除obj的第一个(索引最小的)匹配项
      void removeElementAt(int index)
      //删除指定索引处的组件
      boolean retainAll(Collection c)
      //在此向量中仅保留指定Collection中包含的元素
      
    5. 在Vector中查询数据的方法

      boolean contains(Object elem)
      //如果此向量包含指定的元素,则返回 true。
      boolean containsAll(Collection c)
      //如果此向量包含指定 Collection 中的所有元素,则返回 true
      Object elementAt(int index)
      //返回指定索引处的组件
      Enumeration elements()
      //返回此向量中组件的枚举
      Object firstElement()
      //返回此向量的第一个组件(索引值为0)
      Object get(int index)
      //返回向量中指定位置的元素
      int indexOf(Object elem)
      //返回此向量中第一次出现的指定元素的索引,若此向量不包含此元素,返回-1
      int indexOf(Object elem, int index)
      //从index处开始,正向查找,返回此向量中第一次出现的指定元素的索引,
      //若此向量不包含此元素,返回-1
      int lastIndexOf(Object elem)
      //返回此向量中,最后一次出现的指定元素的索引;如果此向量不包含该元素,则返回-1
      int lastIndexOf(Object elem, int index)
      //从index处逆向搜索,返回此向量中,最后一次出现的指定元素的索引;
      //如果此向量不包含该元素,则返回-1
      
    6. 修改Vector中数据的方法

      void copyInto(Object[] anArray)
      //将此向量的组件复制到指定数组中
      Object set(int index, Object element)
      //用指定元素替代此向量中指定位置处的元素
      void setElementAt(Object obj, int index)
      //将此向量指定index处的对象设置为obj
      
    7. 与Vector自身属性有关的方法(而不是与其内部数据有关)

      void ensureCapacity(int mainCapacity)
      //增加此向量的容量(如有必要),以确保其至少能够保存最小容量参数指定的组件数。
      boolean isEmpty()
      //检查此向量是否不包含任何组件
      void setSize()
      //设置此向量的大小
      int Capacity()
      //获取此向量的容量,而不是大小
      int size()
      //获取此向量的大小,而不是容量
      void trimToSize()
      //  对此向量的容量进行微调,使其等于向量的当前大小。
      
    1. 实质上,stack是vector的一个子类,因此在Stack中继承了Vector的方法,
      除了这些方法之外,Stack中还有一些自己的方法
    2. boolean empty()
      //测试栈是否为空
      Object peek()
      //查看栈顶部的元素,但是不从栈中移除
      Object pop()
      //移除栈顶元素,并将其作为返回值
      Object push(Object element)
      //把参数对象压入栈顶
      int search(Object element)
      //返回参数对象在栈中的位置,以1为基数
      
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容