zoukankan      html  css  js  c++  java
  • java基础系列(二):java数据结构及常用方法

    1.数组Array

    (1)创建数组

        dataType[] arrayName = new dataType[length];必须指定大小,否则会报错;如果不想指定大小,应采用声明数组变量的方式
        
        dataType arrayName[];效果相同,这是C/C++创建数组的方式
        
        dataType[] arrayName = {elem1,elem2,......};

    (2)数组的初始化

    数组创建之后如果没有给数组元素赋值,那么java会给数组提供一个默认值。

    内置类型型数组:
        char型:默认值是0对应的字符
        int型:默认值是0
        float型:默认值是0.0
        boolean型:默认值是false
    对象型数组:默认值是null,例String,Integer,Character......

    (3)数组常用的方法

    java.util.Arrays提供的方法都是静态的。
        1.fill(object[],fromindex,toIndex,val):给数组元素赋值或指定区域的赋值
        2.equals():判断两个数组是否相等
        3.sort(object[]):数组排序
        4.binarySearch():对排序好的数组进行二分查找
        5.System.arraycopy(object[],index,object[],index,count):将一个数组复制到另一个数组中去
        6.islength()

    2.数据结构

    (1)枚举Enumeration

      hasMoreElements():判断下一个元素是否存在
      nextElement():返回下一个对象

    (2)位集合Bitset

    构造函数:

      .BitSet()

      .BitSet(int size):所有位初始化为false

    BitSet常用方法:

    1.set(int index):将索引处的值设为true,还可以指定区域设置指定的值
    例:
        BitSet a = new BitSet(5);
        a.set(0)将0位设置为true
        a.set(1,true) 将1位设为true
        a.set(0,4,true) 区域设置
        a字面存储的是值为true的索引
        System.out.println(a){0,1,2,3,4}
    2.get():获取值操作与set()类似
        a.get(0)得到的是boolean值
        a.get(0,2)返回一个对象
    3.length():返回最后一位为true时的元素个数
    4.size():返回实际使用的空间位数
        BitSet a = new BitSet(10);
        a.set(1,4);len为4
        a.set(7);len为8
        a.size();返回值为64,位数以步长64递增
    5.and(BitSet set):对集合执行逻辑与操作,并将逻辑操作结果保存在目标集合中
        a.and(b):逻辑运算结果保存在a中
      andNot():与非操作,只改变参与的元素
      or():l逻辑或操作
      xor():逻辑异或操作
    6.cardinality():返回值为true的位数
    7.clear():将相应区域位设为false
    8.clone():复制BitSet
        BitSet c = b.clone();程序会报错
        Object c = b.clone();
        BitSet c = (BitSet)b.clone();
    9.flip():设置指定位置的补码
    10.isEmpty():如果没有包含任何设置为true的为,返回true
    11.nextClearBit(int fromindex)和nextSetBit(int fromindex):返回第一个为false(true)的索引
    12.toString():把字面量转换为字符串
        a.toString();返回{1,2}

    (3)栈Stack

    栈是Vector的一个子类,它实现了一个标准的先进后出的栈

    1.empty():判断栈是否为空
    2.Object peek():查看栈顶部的对象
    3.Object push():将元素压入栈的顶部
    4.Object pop():移除栈顶部对象,并返回
    5.search():返回指定元素的索引,以1为基数

    (4)Properties

    Properties继承于Hashtable.表示一个持久的属性集。

        1.setProperty(String key,String value):设置属性
        2.getProperty(String key,String default):获取属性
        3.load(InputSteam streamln) throws IOException:从输入流中读取属性列表
        4.list(PrintStream streamOut):将属性列表输出到输出流
          list(PrintWriter steamOut)
        5.store(OutputStream streamOut,String description):将属性列表写入输出流

    (5)向量Vector

    Vector类实现了一个动态的数组。和ArrayList很相似,凡是两者是不同的:

      1.Vector是同步访问的

      2.Vector包含了许多传统的方法,这些方法不属于集合框架。

    构造方法:

      1.Vector(int size, int incr):增量表示向量每次增加的容量

      2.Vector(Collection c)

    1.增
    add(int index,Object element):在指定位置添加元素
    addAll(int index,Collection c):在指定位置添加集合
    2.删
    remove():删除元素对象
        remove(2);删除第2个元素
        remove((Integer)2);删除值为2的对象,只能删除一个元素
    removeAll(Collection c):删除向量中与集合c相同的元素。
    removeAllElements():删除所有的元素
    retainAll(Collectin c):删除除c中元素以外的其他元素
    3.改
    set(int index,object obj):在指定索引位置设置元素
    4.查
    get(int index):获取指定位置的元素
    indexOf(Object obj,int fromIndex):返回指定元素第一次出现的索引
    lastIndexOf(Object obj,int fromIndex):返回指定元素最后一次出现的索引
    5.其他
    clear():移除所有的元素
    clone():复制向量的一个副本
    toArray():向量转为数组
    size():返回元素个数
    capacity:返回容量
    contains():判断是否包含某元素
    containsAll():判断是否包含集合中的元素
    elements():返回的是枚举
    iterator():返回迭代器
    isEmpty():判断是否为空

    3.集合框架

    java集合框架主要有两种类型的容器:Collection和Map;Collection接口又有3种子类型:List,Set和Queue,再下面是一些抽象类,最后是具体实现类,常用的有ArrayList,LinkedList,HashSet,LinkedHashSet,HashMap,LinkedHashMap和HashTable。

    (1)Collection常用方法

    1.sort():排序
    2.reverse():反转
    3.shuffle():打乱
    4.fill():赋值
    5.min(,comparator)/max(,comparator):指定比较器
    6.copy(list m,list n):将list n copy到 list m 中去
    7.indexOfSublist(List list,List subList)
    8.lastIndexOfSublist(List source,List target):截取字符串
    9.rotate(List list,int m):m为正数,表示循环向右移动m次;m为负数,表示循环向左移动
    10.swap(List list,int i,int j):交换指定索引元素的位置
    11.binarySearch():返回指定元素的索引
    12.replaceAll(List list,Object old ,Object new):替换list中元素

    (2)List常用方法

    与vector类似

    1.增
    add(int index,Object element):在指定位置添加元素
    addAll(int index,Collection c):在指定位置添加集合
    2.删
    remove():删除元素对象
    remove(2);删除第2个元素
    remove((Integer)2);删除值为2的对象,只能删除一个元素
    removeAll(Collection c):删除向量中与集合c相同的元素。
    retainAll(Collectin c):删除除c中元素以外的其他元素
    3.改
    set(int index,object obj):在指定索引位置设置元素
    4.查
    get(int index):获取指定位置的元素
    indexOf(Object obj,int fromIndex):返回指定元素第一次出现的索引
    lastIndexOf(Object obj,int fromIndex):返回指定元素最后一次出现的索引
    5.其他
    clear():移除所有的元素
    toArray():向量转为数组
    size():返回元素个数
    contains():判断是否包含某元素
    containsAll():判断是否包含集合中的元素
    iterator():返回迭代器
    isEmpty():判断是否为空

    (3)Set常用方法

    1.增
    add(int index,Object element):在指定位置添加元素
    addAll(int index,Collection c):在指定位置添加集合
    2.删
    remove():删除元素对象
    removeAll(Collection c):删除向量中与集合c相同的元素。
    retainAll(Collectin c):删除除c中元素以外的其他元素
    5.其他
    clear():移除所有的元素
    toArray():向量转为数组
    size():返回元素个数
    contains():判断是否包含某元素
    containsAll():判断是否包含集合中的元素
    iterator():返回迭代器
    isEmpty():判断是否为空

    (4)HashTable常用方法

    1.增
    put(Object key,Object value):添加元素
    putAll(Map m):添加图
    2.删
    remove(Object key):删除元素
    3.改
    replace(Object key,Object value)
    replace(Object key,Object oldvalue,Object newvalue)
    3.查
    get(Object key):获取元素的值
    containsKey(Object key):判断是否有指定的key
    containsValue(Object value):判断是否有指定的value
    4.其他
    elements():返回哈希表中的值的枚举
    keys():返回哈希表中的键的枚举
    keySet():返回键的集合
    values():返回值的集合
    entrySet():entry.getKey(),entry.getValue(),entry是Map.EntrySet()实例化对象
    clear():将哈希表清空
    isEmpty():判断表是否为空
    size():返回哈希表的大小
    ​

    4.数组和集合的相互转换

      数组——》集合:Arrays.asList(Object[])

      集合——》数组:obj.toArray(Object[])

      注:参数是数组对象,不是内置数据数组,比如char[],这种java把它的内存地址作为集合的一个元素。

  • 相关阅读:
    1036 商务旅行
    4165 ​高精度求阶乘
    3117 高精度练习之乘法
    封装代理
    freemarker写select组件(三)
    VC双缓冲画图技术介绍
    JS学习十七天----工厂方法模式
    Struts2 全局结果集
    HDU 1730 Northcott Game
    C++ STL:vector
  • 原文地址:https://www.cnblogs.com/amazing-eight/p/11739628.html
Copyright © 2011-2022 走看看