Java常用数据结构一览

来源:互联网 发布:pam打分矩阵 编辑:程序博客网 时间:2024/05/20 00:15


整理了一下Java中常用的数据结构的用法。

 

BitSet

当需要表示大量的二进制或者Boolean型数据时可以使用BitSetBitSet使我们不必使用位运算来得到位的值,并且其长度可以自增长。

下面是一个BitSet的使用小例子:

importjava.util.*;

 

publicclass DemoMain {

    static BitSet on_off_set;

    

    public static void main(String[] args) {

          // TODO Auto-generated method stub

          on_off_set = new BitSet(10);

          on_off_set.set(5);

          on_off_set.set(30);

          

          printOnOffSet();

    }

 

    static void printOnOffSet() {

          for (int i = 0; i < on_off_set.length(); i++) {

               System.out.println(i + ":" + on_off_set.get(i));

          }

    }

}

除了上面的方法以外,BitSet还提供了clear()方法来去除某个index上的标记,使用and()or()xor()等方法来与另一个BitSet进行位运算,使用clone()进行复制,使用flip()进行翻转等等。

 

ArrayList

ArrayList是一种可变长的数组数据结构,比数组更加灵活好用。

下面是一个使用示例:

ArrayList<String>arr = new ArrayList<String>(20);

arr.add("A");

arr.add("B");

arr.add("C");

arr.set(0,"A1");

 

for(int i = 0; i < arr.size(); i++) {

    System.out.println(arr.get(i));

}

 

intbIndex = arr.indexOf("B");

System.out.println(bIndex);

ArrayList可以使用泛型来确定其元素类型,也可以不指定泛型模板类。除了上面定义的方法,ArrayList中还定义了很多其他的方法,例如clear()clone()contains()isEmpty()lastIndexOf()remove()removeAll()subList()toArray()等有用的方法。

 

除了使用上面的方法来遍历ArrayList,还可以使用迭代器来遍历:

Iterator<String>iter = arr.iterator();

while(iter.hasNext()){

    System.out.println(iter.next());

}

上面的代码同样可以不指定泛型模板类。

 

Stack

Stack,即堆栈,定义了一个先入后出的元素序列,下面是一个示例代码:

Stack<String>s = new Stack<String>();

s.push("A");

s.push("B");

Stringb = s.peek();

s.pop();

Stringa = s.pop();

s.empty();

StackArrayList一样,可以使用泛型定义,也可以不用。除了上面用到的方法,Stack类中还定义了很多其他的常用方法,例如search等,另外Stack还继承了Vector类的很多方法。

 

HashMap

HashMap实现Map接口,提供散列映射来存储键值对儿,散列映射的负载系数在0.0~1.0之间,系数越接近1.0,则散列的内存效率越高,查找效率越低,系数越接近0.0。散列映射提供三种构造函数:

HashMap hm = new HashMap();     //默认容量为16,负载系数默认为0.75

HashMap hm = new HashMap(30);       //容量30,负载系数默认为0.75

HashMap hm = new HashMap(30,0.5);       //容量30,负载系数0.5

使用散列的好处是,在存储的时候,键值实际上是将对象散列为散列码来得到的,并不是通过比较对象和存储对象,这样做对效率就有很大的提升。

下面是散列的一个示例代码:

HashMap<String,Integer> hm = new HashMap<String, Integer>();

hm.put("A",1);

hm.put("B",2);

hm.put("C",3);

hm.put("D",4);

hm.put("E",5);

intsize = hm.size();

booleanisEmpty = hm.isEmpty();

IntegercCount = hm.get("C");

booleanisAIncluded = hm.containsKey("A");

booleanis3Included = hm.containsValue(3);

hm.clear();

 

上面就是Java中比较常用的数据结构,有问题欢迎留言。

83 0
原创粉丝点击