Java部分数据结构

Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类: 

 

枚举(Enumeration)

枚举(Enumeration)接口虽然它本身不属于数据结构,但它在其他数据结构的范畴里应用很广。 枚举(The Enumeration)接口定义了一种从数据结构中取回连续元素的方式。

例如,枚举定义了一个叫nextElement 的方法,该方法用来得到一个包含多元素的数据结构的下一个元素。

关于枚举接口的更多信息,请参见枚举(Enumeration)


位集合(BitSet)

位集合类实现了一组可以单独设置和清除的位或标志。

该类在处理一组布尔值的时候非常有用,你只需要给每个值赋值一"位",然后对位进行适当的设置或清除,就可以对布尔值进行操作了。

关于该类的更多信息,请参见位集合(BitSet)


向量(Vector)

向量(Vector)类和传统数组非常相似,但是Vector的大小能根据需要动态的变化。

和数组一样,Vector对象的元素也能通过索引访问。

使用Vector类最主要的好处就是在创建对象的时候不必给对象指定大小,它的大小会根据需要动态的变化。

关于该类的更多信息,请参见向量(Vector)

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

  • Vector 是同步访问的。
  • Vector 包含了许多传统的方法,这些方法不属于集合框架。
 public static void main(String[] args) throws Exception {
        Vector vector = new Vector();
        vector.add(new Integer(1));
        vector.add(2);
        vector.add(3.1);
        vector.add("hello");
//        Enumeration<Integer> res = vector.elements();
//        System.out.println(res.nextElement());
//        System.out.println(vector.size());
        System.out.println(vector.toString());
    }

打印

[1, 2, 3.1, hello] 


栈(Stack)

栈(Stack)实现了一个后进先出(LIFO)的数据结构。

你可以把栈理解为对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部。

当你从栈中取元素的时候,就从栈顶取一个元素。换句话说,最后进栈的元素最先被取出。

关于该类的更多信息,请参见栈(Stack)

demo

 public static void main(String[] args) throws Exception {
        //先进后出的方式
        Stack<String> stack = new Stack<>();
        //入栈
        stack.push("hello");
        stack.push(" peter");
        stack.push(" good");
        //栈的部分方法
        //判空
        System.out.println(stack.isEmpty());
        //查看堆栈顶部的对象,但不从堆栈中移除它
        System.out.println(stack.peek());
        //移除堆栈顶部的对象,并作为此函数的值返回该对象
        System.out.println(stack.pop());
        //移除后的大小
        System.out.println(stack.size());
        //返回对象在堆栈中的位置,以 1 为基数,查不到返回-1
        System.out.println(stack.search("hello"));
        //遍历pop查询并出栈
        while (!stack.isEmpty()) {
            System.out.println(stack.pop());
        }
        //清空栈
        stack.clear();
        System.out.println(stack.size());
    }

字典(Dictionary)

字典(Dictionary) 类是一个抽象类,它定义了键映射到值的数据结构。

当你想要通过特定的键而不是整数索引来访问数据的时候,这时候应该使用Dictionary。

由于Dictionary类是抽象类,所以它只提供了键映射到值的数据结构,而没有提供特定的实现。

关于该类的更多信息,请参见字典( Dictionary)

 

Dictionary类已经过时了。在实际开发中,你可以实现Map接口来获取键/值的存储功能。


哈希表(Hashtable)

Hashtable类提供了一种在用户定义键结构的基础上来组织数据的手段。

例如,在地址列表的哈希表中,你可以根据邮政编码作为键来存储和排序数据,而不是通过人名。

哈希表键的具体含义完全取决于哈希表的使用情景和它包含的数据。

关于该类的更多信息,请参见哈希表(HashTable)

它和HashMap类很相似,但是它支持同步。

像HashMap一样,Hashtable在哈希表中存储键/值对。当使用一个哈希表,要指定用作键的对象,以及要链接到该键的值。

然后,该键经过哈希处理,所得到的散列码被用作存储在该表中值的索引。


属性(Properties)

Properties 继承于 Hashtable.Properties 类表示了一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。

Properties 类被许多Java类使用。例如,在获取环境变量时它就作为System.getProperties()方法的返回值。

关于该类的更多信息,请参见属性(Properties)

demo

 public static String getValue(String property, String defaulValue) {
        try {
            if (ph == null) {
                String configFile = Path.getCurrentPath() + "/config/app.properties";
                ph = new Properties();
                ph.load(new FileInputStream(configFile));
            }
            return ph.getProperty(property);
        } catch (IOException e) {
            logger.error("获取配置文件参数异常", e);
        }
        return defaulValue;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漁陽

彼此共勉,砥砺前行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值