编程语言
首页 > 编程语言> > Java基础——Properties

Java基础——Properties

作者:互联网

一、Properties作为Map集合来使用

       //Properties作为集合来用
      Properties pt=new Properties();
      //添加元素
      pt.put("001","张三");
      pt.put("002","李四");
      pt.put("003","王五");
      pt.put("003","王六");
      //遍历集合
      Set<Object> keySet = pt.keySet();
      for (Object key:keySet){
          Object value = pt.get(key);
          System.out.println(key+","+value);

      }

  }
}

同样的,Properties同样不会存储键重复的元素,如果有重复的会将值覆盖掉

二、Properties作为集合的特有方法

方法名说明
Object setProperty(String key,String value) 设置集合的键和值,都是String类型,底层调用Hashtable方法put
String getProperty(String key) 使用此列表中指定的键搜索属性
Set<String>stringPropertyNames() 从该列表中返回一个不可修改的键集,其中键及其对应的值是字符串
public class Demo02 {
  public static void main(String[] args) {
      //创建集合对象
      Properties pt=new Properties();
      //Object setProperty(String key,String value)设置集合的键和值,都是String类型,底层调用Hashtable方法put
      pt.setProperty("001","张三");
      //public synchronized Object setProperty(String key, String value) {
      //       return put(key, value);
      //   }

      // public synchronized V put(K key, V value) {
      //       // Make sure the value is not null
      //       if (value == null) {
      //           throw new NullPointerException();
      //       }
      //
      //       // Makes sure the key is not already in the hashtable.
      //       Entry<?,?> tab[] = table;
      //       int hash = key.hashCode();
      //       int index = (hash & 0x7FFFFFFF) % tab.length;
      //       @SuppressWarnings("unchecked")
      //       Entry<K,V> entry = (Entry<K,V>)tab[index];
      //       for(; entry != null ; entry = entry.next) {
      //           if ((entry.hash == hash) && entry.key.equals(key)) {
      //               V old = entry.value;
      //               entry.value = value;
      //               return old;
      //           }
      //       }
      pt.setProperty("002","李四");
      pt.setProperty("003","王五");
      //String getProperty(String key)使用此列表中指定的键搜索属性
      System.out.println(pt.getProperty("001"));
      System.out.println(pt.getProperty("0011"));//返回null
      //Set<String>stringPropertyNames()从该列表中返回一个不可修改的键集,其中键及其对应的值是字符串
      Set<String> propertyNames = pt.stringPropertyNames();
      for (String key:propertyNames){
          String value = pt.getProperty(key);
          System.out.println(key+","+value);
      }

  }
}

其中第一种方法的设计方式要特别说一下,setProperty(String key,String value)设置集合的键和值,都是String类型,底层调用Hashtable方法put,我们通过跟踪至底层源码可以看到setProperty显示调用的put方法;而setProperties方法传参是String类型的,put方法是泛型,也就是put方法可以接受、返回任意类型的值,但setProperties方法传的参数是String类型,那么通过这种设计方式就限制了put方法返回的值类型只能是String类型。

标签:Java,String,pt,基础,value,key,put,Properties
来源: https://www.cnblogs.com/CYan521/p/16136560.html