首页 > 代码库 > 2016-11-15 Stack子类与Properties子类

2016-11-15 Stack子类与Properties子类

前言:Stack表示栈操作,栈是一种先进后出的数据结构。而Stack是Vector的子类。

一、Stack子类

      API文档:public class Stack <E> extends Vector <E>

      但是需要注意的是,虽然Stack是Vector子类,可是它不会使用Vector类方法,它使用自己的方法:

      |-出栈:public E push(E item);

      |-出栈:public E pop();

范例代码:

package cn.mldn.demo27;
import java.util.Stack;
public class TestDemo {
    public static void main(String[] args) {
        Stack<String> all = new Stack<String>();
        all.push("A");
        all.push("B");
        all.push("C");
        all.push("D");
        System.out.print(all.pop());
        System.out.print(all.pop());
        System.out.print(all.pop());
        System.out.print(all.pop());
    }
}

运行程序:

技术分享

注意:在进栈操作的时候,如果栈已经没有数据了,那么无法继续出栈。

二、Properties子类

       国际化程序的特点:同一个程序,根据不同的语言环境选择资源文件,所有的资源文件后缀必须是“*.properties”。

       properties是Hashtable的子类,主要是进行属性的操作(属性的最大特点是利用字符串设置Key和value),首先来观察Properties类定义结构。

       public class Properties extends Hashtable<Object,object>

       在使用properties类的时候不需要设置泛型类型,因为从它一开始出现只能够保存String,在Properties类里面主要使用如下的操作方法:

          |-设置属性:public Object setProperty(String key,String vaule);

          |-取得属性:public String getProperty(String key),如果key不存在返回null;

          |-取得属性:public String getProperty(String key,String defaultValue),如果key不存在返回默认值。

范例代码:

package cn.mldn.demo27;
import java.util.Properties;
public class TestDemo01 {
    public static void main(String[] args) {
        Properties pro = new Properties();
        pro.setProperty("BJ", "北京");
        pro.setProperty("TJ", "天津");
        System.out.println(pro.getProperty("BJ"));
        System.out.println(pro.getProperty("GZ"));
        System.out.println(pro.getProperty("GZ","没有此记录"));        
    }
}

运行结果:

技术分享

      在Properties类里面提供有数据的输出操作:public void store(OutputStream out,String comments)throws IOException

范例代码:

package cn.mldn.demo27;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Properties;
public class TestDemo02 {
    public static void main(String[] args)throws Exception {
        Properties pro = new Properties();
        pro.setProperty("BJ", "北京");
        pro.setProperty("TJ", "天津");
        //一般而言后缀可以随意设置,但是标准来讲,既然是属性文件,后缀就必须是*.Properties,这样做也是为了与国际化对应
        pro.store(new FileOutputStream(new File("E:"+File.separator+"area.properties")), "Area.info");
    }
}

运行结果:
技术分享

       也可以从指定的输入流中读取属性信息:public void load(InputStream inStream)throws IOException;

范例代码:

package cn.mldn.demo27;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;
public class TestDemo03 {
    public static void main(String[] args) throws Exception {
        Properties pro = new Properties();
        pro.load(new FileInputStream(new File("E:"+File.separator+"area.properties")));
        System.out.println(pro.getProperty("BJ"));
    }
}

运行结果:

技术分享

总结:资源文件中的数据一定都是字符串。

2016-11-15 Stack子类与Properties子类