当前位置: 首页 > news >正文

阿里云服务器责任怎么做网站建境模型

阿里云服务器责任怎么做网站,建境模型,南昌seo推广公司,专业网站制作网站公司目录 HashTable基本介绍 Hashtable和HashMap对比 Properties Properties基本介绍 应该如何选择集合 TreeSet源码分析 HashTable基本介绍 1)存放的元素是键值对:即K-V 2)hashtable的键和值都不能为null,否则会抛出NullPointerException 3)hashTab…

目录

HashTable基本介绍

Hashtable和HashMap对比

Properties

Properties基本介绍

应该如何选择集合

TreeSet源码分析


HashTable基本介绍

1)存放的元素是键值对:即K-V

2)hashtable的键和值都不能为null,否则会抛出NullPointerException

3)hashTable 使用方法基本上和HashMap一样

4)hashTable 是线程安全的(synchronized),hashMap是线程不安全的

5)简单看下底层结构

代码演示:

注意事项:

1.不能加入null 无论是key 还是 value 否则会报空指针异常

package idea.chapter14.map_;import java.util.Hashtable;@SuppressWarnings({"all"})
public class HashTableExercise {public static void main(String[] args) {Hashtable table = new Hashtable();//oktable.put("john", 100); //ok//HashTable的键和值都不能为null否则会报空指针异常//不能加入null 无论是key 还是 value 否则会报空指针异常//table.put(null, 100); //异常 NullPointerException//table.put("john", null);//异常 NullPointerExceptiontable.put("lucy", 100);//oktable.put("lic", 100);//oktable.put("lic", 88);//替换table.put("hello1", 1);table.put("hello2", 1);table.put("hello3", 1);table.put("hello4", 1);table.put("hello5", 1);table.put("hello6", 1);System.out.println(table);//简单说明一下Hashtable的底层//1. 底层有数组 Hashtable$Entry[] 初始化大小为 11//2. 临界值 threshold 8 = 11 * 0.75//3. 扩容: 按照自己的扩容机制来进行即可.//4. 执行 方法 addEntry(hash, key, value, index); 添加K-V 封装到Entry//5. 当 if (count >= threshold) 满足时,就进行扩容//6. 扩容机制是 把原来的大小乘2在加1 int newCapacity = (oldCapacity << 1) + 1; 的大小扩容.}
}

Hashtable和HashMap对比

版本线程安全(同步)效率允许null键null值
HashMap1.2不安全可以
Hashtable1.0安全不可以

Properties

Properties基本介绍

1.Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存数据。

2.他的使用特点和Hashtable类似

3.Properties 还可以用于 从xxx.properties文件中,加载数据到Properties类对象,并进行读取和修改

4.说明:工作后 xxx.properties文件通常作为配置文件,会在IO流的时候讲解

代码演示:

package idea.chapter14.map_;import java.util.Properties;@SuppressWarnings({"all"})
public class Properties_ {public static void main(String[] args) {//1. Properties 继承了  Hashtable//2. 可以通过 k-v 存放数据,当然key 和 value 不能为 nullProperties properties = new Properties();//因为Properties继承了HashTable 所以Properties的key和value都不能为null否则会报空指针异常//properties.put(null, "abc");//抛出 空指针异常//properties.put("abc", null); //抛出 空指针异常properties.put("john", 100);//k-vproperties.put("lucy", 100);properties.put("lic", 100);properties.put("lic", 88);//如果有相同的key , value被替换System.out.println("properties=" + properties);//通过k 获取对应值System.out.println(properties.get("lic"));//88//删除properties.remove("lic");System.out.println("properties=" + properties);//修改properties.put("john", "约翰");System.out.println("properties=" + properties);}
}

应该如何选择集合

在开发中,选择什么集合实现类,主要取决于业务操作特点,然后根据集合实现类特性进行选择,分析如下:

1)先判断存储的类型(一组对象[单列]或一组键值对[双列])

2)一组对象[单列]:Collection接口

允许重复:

        List ​ 增删多:LinkedList [底层维护了一个双向链表] ​

        改查多:ArrayList[底层维护 Object类型的可变数组] ​

不允许重复:Set

         ​ 无序:HashSet[底层是HashMap,维护了一个哈希表 即(数组+链表+红黑树)]

        排序:TreeSet ​ 插入和取出顺序一致:LinkedHashSet,维护数组+双向链表

3)一组键值对[双列]:Map ​

键无序:HashMap[底层是:哈希表jdk7:数组+链表,jdk8:数组+链表+红黑树]

​ 键排序:TreeMap

​ 键插入和取出顺序一致:LinkedHashMap ​

读取文件 Properties

TreeSet源码分析

代码演示:

源码分析:

//源码分析:
/*
1. 构造器把传入的比较器(comparator)对象,赋给了 TreeSet的底层的 TreeMap的属性this.comparatorpublic TreeMap(Comparator<? super K> comparator) {this.comparator = comparator;}2. 在 调用 treeSet.add("tom"), 在底层会执行到Comparator<? super K> cpr = comparator;//把我们传入的匿名对象赋给cpr因为我们传入了一个匿名内部类 所以comparator不为空 就会进入 do while循环if (cpr != null) {//cpr 就是我们的匿名内部类(对象)do {parent = t;cmp = cpr.compare(key, t.key);//动态绑定到我们的匿名内部类(对象)compareif (cmp < 0)t = t.left;else if (cmp > 0)t = t.right;else //如果相等,即返回0,这个Key就没有加入return t.setValue(value);} while (t != null);}*/
package idea.chapter14.set_;import java.util.Comparator;
import java.util.TreeSet;/*** TreeSet源码分析*/
@SuppressWarnings({"all"})
public class TreeSet_ {public static void main(String[] args) {//1. 当我们使用无参构造器,创建TreeSet时,仍然是无序的//2. 希望添加的元素是,按照字符串大小来排序//3. 使用TreeSet 提供的一个构造器,可以传入一个比较器(匿名内部类)并指定排序规则//4. 看源码//源码分析:/*1. 构造器把传入的比较器(comparator)对象,赋给了 TreeSet的底层的 TreeMap的属性this.comparatorpublic TreeMap(Comparator<? super K> comparator) {this.comparator = comparator;}2. 在 调用 treeSet.add("tom"), 在底层会执行到Comparator<? super K> cpr = comparator;//把我们传入的匿名对象赋给cpr因为我们传入了一个匿名内部类 所以comparator不为空 就会进入 do while循环if (cpr != null) {//cpr 就是我们的匿名内部类(对象)do {parent = t;cmp = cpr.compare(key, t.key);//动态绑定到我们的匿名内部类(对象)compareif (cmp < 0)t = t.left;else if (cmp > 0)t = t.right;else //如果相等,即返回0,这个Key就没有加入return t.setValue(value);} while (t != null);}*///        TreeSet treeSet = new TreeSet();//使用一个有参数的构造器,传入一个比较器,就可以按照我们指定的规则来进行排序TreeSet treeSet = new TreeSet(new Comparator() {@Overridepublic int compare(Object o1, Object o2) {//下面 调用String的 compareTo方法进行字符串大小比较//要求加入的元素,按照长度大小排序//return ((String) o2).compareTo((String) o1);//底层会有do while循化依次进行比较  根据我们全入的方法而定return ((String) o1).length() - ((String) o2).length();}});//添加数据.treeSet.add("jack");treeSet.add("tom");//3treeSet.add("sp");treeSet.add("a");treeSet.add("abc");//3因为我们是按照字符串的长度进行比较,因此abc不会添加成功System.out.println("treeSet=" + treeSet);}
}

http://www.yayakq.cn/news/46313/

相关文章:

  • 网站大全软件北安网站建设
  • 青岛市建设工程质量安全监督站官方网站重庆网上房地产查询
  • 厦门建设银行官方网站给个网站做导航违法吗
  • _网站建设网站为什么淘宝店主不自己做电商网站
  • 2017网站设计如何报价微信小程序做网站
  • 网站备案 怎么建站为什么公司的网站打不开
  • vps如何做网站步骤wordpress微信分享没有缩略图
  • 怀柔建设网站住房和城乡建设部监理网站
  • 平面素材设计网站专门教做衣服的网站
  • 青岛网站制作计划定制网站建设服务公司
  • 网站推荐你懂我的意思吧2020知乎目前很火的网页游戏
  • 编程教学网站推荐区块链app排名
  • 国外网站设计版式欣赏哈尔滨建设规划局网站
  • ssc彩网站开发网站带后台
  • 做网站如何选择数据源电子商务网店运营
  • 电商网站开发文献综述随州市网站建设
  • dw和vs做网站哪个好用网页制作素材包
  • 佛山市外贸网站建设公司电子商务网站建设与维护教案
  • 母婴网站设计开发小型企业管理系统
  • vps优化wordpressdede网站优化
  • 什么是功能型网站南宁建设学院官网
  • 温州网站建设大全用电脑做服务器的建一个网站
  • wordpress应用商城wpjam百色网站优化
  • 做网站接私活鞍山在网络做推广
  • 企业建立网站旅游公司网站难做吗
  • 企业网站设计模板零基础网络工程师培训
  • 珠海企业落户申请网站四合一营销型网站
  • wordpress建站什么意思王晴儿 网站建设
  • 企业网站色彩wordpress输密码访问
  • 百讯网站建设wordpress如何设置菜单