精华内容
下载资源
问答
  • Java 中的集合体系

    2021-04-12 23:54:47
    目录1. 什么是集合?2. 为什么要使用集合?3. 3个接口介绍3.1 `List` 接口包括以下实现3.2 `Set` 接口包括以下实现3.3 `Map` ...集合类是可以往里面保存多个对象的类,存放对象,不同的集合类有不同功能和特点,

    1. 什么是集合?

    集合类是 Java 数据结构的实现。它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。集合类是可以往里面保存多个对象的类,存放的是对象,不同的集合类有不同的功能和特点,适合不同的场合,用以解决一些实际问题。

    Java中的集合类可以分为两大类:一类是实现Collection接口;另一类是实现Map接口

    • Collection是一个基本的集合接口,Collection 中可以容纳一组集合元素(Element)。

    • Map 没有继承 Collection 接口,与 Collection 是并列关系。Map提供键(key)到值(value)的映射。一个 Map 中不能包含相同的键,每个键只能映射一个值。

    Collection 有两个重要的子接口 ListSetList 是一个有序的集合,其中的每个元素都有索引,使用此接口能够准确的控制每个元素插入的位置。Set 接口的特点是不能包含重复的元素,最多有一个 null 元素。

    在 Java 中,以 Map 结尾的类都实现了 Map 接口。除了以 Map 结尾的类之外, 其他类都实现了 Collection 接口。

    2. 为什么要使用集合?

    • 增加代码重用性。
    • 提升程序的运行速度和质量。
    • 降低编程难度。

    3. 3个接口介绍

    List, Set, Map 的区别

    • List:存储的元素是有序的、可重复的。
    • Set:存储的元素是无序的,不可重复的。
    • Map:使用键值对(Key-Value)存储。Key 是无序的、不可重复的。

    3.1 List 接口包括以下实现

    • ArrayListObject[] 类型的数组。适用于频繁的查找,线程不安全。
    • VectorObject[] 类型的数组。线程安全。
    • LinkedList :双向链表。适用于添加、删除。

    3.2 Set 接口包括以下实现

    • HashSet :基于 HashMap 实现,底层采用 HashMap 保存元素。
    • LinkedHashSetLinkedHashSetHashSet 的子类,其内部是通过LinkedHashMap 实现的。
    • TreeSet :是有序的、唯一的。通过红黑树(自平衡的排序二叉树)实现。

    3.3 Map 接口包括以下实现

    • HashMap :底层是基于拉链式散列结构(也就是数组和链表)或红黑树组成。当链表长度大于某一阈值(默认为8)时,会转换成红黑树,以减少搜索时间。如果当前数组的长度小于64,先进行数组扩容,而不是直接转换为红黑树。
    • LinkedHashMapLinkedList 继承于 HashMap ,所以它的底层是在 HashMap 结构的基础上,增加了一条双向链表,使得 HashMap 结构可以保持键值对的插入顺序。同时,通过堆链表进行相应的操作,实现了访问顺序的相关逻辑。
    • HashTable :由数组+链表组成,数组是 HashMap 的主体, 链表是为了解决哈希冲突。
    • TreeMap :红黑树(自平衡的二叉排序树)。

    4. 如何选择集合?

    根据集合的特点选取,比如,

    • 根据键值获取元素值:Map 下的接口
    • 需要排序:TreeMap
    • 不需要排序:HashMap
    • 需要保证线程安全:ConcurrentHashMap
    • 只需要存放元素值:实现 Collection 接口的集合
    • 需要保证元素唯一:实现 Set 接口的集合,如 HashSetTreeSet
    • 不需要保证元素唯一:实现 List 接口的集合,如 ArrayListLinkedList

    5. 比较和区别一些接口或类

    1)比较 ArrayList , LinkedList , Vector

    ArrayList LinkedList Vector
    底层数据结构 Object[] 数组 双向链表 Object[] 数组
    是否保证线程安全 不保证 不保证 保证
    是否支持随机访问 get(index) 不支持 get(index)
    内存空间占用 结尾预留一定的容量空间 每个元素比ArrayList的空间多 结尾预留一定的容量空间

    2)比较 Collection 接口中的 Comparable , Comparator

    接口 Comparable Comparator
    java.lang java.util
    排序的方法 compareTo(Object obj) compare(Object obj1, Object) obj2)
    怎么自定义排序 重写compareTo() 自制 Comparator

    自制 Comparator

    Comparator<Integer> comparator = new Comparator<Integer>(){
    	public int compare(int a, int b) {
            return b-a;
        }
    }
    

    重写 compareTo()

    public class Person implements Comparable<Person> {
        private int age;
        Person(){}
     	// 重写compareTo()
    	public int compareTo(Person p) {
        	if (this.age>p.age)	return 1;
            if (this.age<p.age) return -1;
            return 0;
    	}
    }
    
    

    3)比较 HashSet , LinkedHashList , TreeSet

    HashSet LinkedHashSet TreeSet
    底层 HashMap HashSet的子类 红黑树
    是否有序 无序 有序 有序
    线程是否安全 不安全,可以存 null 值 不安全 不安全
    遍历 按照添加的顺序 按照添加的顺序
    排序 自然排序、定制排序

    4)比较 HashMapHashTable

    HashMap HashTable
    线程是否安全 不安全 安全
    效率 较高 基本被淘汰
    是否支持 Null Key 和 Null Value Key 为空的只能有一个,Value 为空的可以有多个 不允许有空Key 和 空 Value,会抛出异常
    初始容量 16/或者给定的大小) 11
    扩充容量 变为原来的2倍/扩充为2的幂次方 变为原来的 2n+1

    5)比较 HashMapHashSet

    HashMap HashSet
    实现的接口 Map Set
    底层 基于拉链式散列结构 HashMap
    存储对象 键值对 仅存储对象
    添加元素的方法 put() add()
    计算哈希码 使用键Key计算Value 两个成员的哈希码可以相同,用equals()判断对象是否相等

    6)比较 HashMapTreeMap

    HashMap TreeMap
    父类 AbstractMap AbstractMap
    实现的接口 NavigableMap 和 SortedMap
    搜索 对集合内元素搜索
    排序 对集合内的元素根据键排序,默认升序

    7)比较 == 和 equals

    == equals
    基本类型 值是否相等
    引用类型 两个引用是否指向同一个对象地址 没有被重写:比较的是地址是否相等。被重写(如String):比较的是地址里的内容。

    6. Collections 工具类有哪些常用方法?

    6.1 排序

    void reverse(List list); // 反转
    void sort(List list); // 按自然排序的升序排序
    void swap(List list, int i, int j); // 交换两个索引位置的元素
    // 旋转。distance>0,把list后distance个元素整体移到前面。distance<0,把list前distance个元素整体移到后面。
    void rotate(List list, int distance);
    

    6.2 查找,替换

    int binarySearch(List list, Object key); // 对list进行二分查找,返回索引
    int max(Collection coll); // 根据元素的自然顺序,返回最大的元素
    int max(Collection coll, Comparator c); // 根据定制顺序,返回最大的元素
    boolean replaceAll(List list, Object oldVal, Object newVal); // 用新元素替换旧元素
    

    参考链接:

    https://snailclimb.gitee.io/javaguide/#/docs/java/collection/Java%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6%E5%B8%B8%E8%A7%81%E9%9D%A2%E8%AF%95%E9%A2%98

    展开全文
  • Parent和Children建立一对多的双向...Child不止和Parent有关联,还和其他的对象有同样的关联,那些就正常。 [code="xml"] class="com.bean.Parent" not-null="false" cascade="none" /> [/code]
  • 根据ID名获取 ...document.getElementsByTagName() docuemnt 可以替换成其他元素 可以获得这个元素里面的某些标签 例 Id选择 参数:标签名 返回类型:获取过来元素对象集合 以伪数组的方式存储 //以下...

    根据ID名获取

    document.getElementById()

    参数:  唯一的ID名 

    返回类型:该元素对象

     

    根据标签名获取

    document.getElementsByTagName()     docuemnt 可以替换成其他元素   可以获得这个元素里面的某些标签  例 Id选择

    参数:标签名

    返回类型:获取过来元素对象的集合  以伪数组的方式存储

     

    //以下为HTML5新增的方法 注意兼容性

     

    根据类名获取 

    document.getElementsByClassName()

    参数:类名

     

    返回指定选择器的第一个元素对象  

    document.querySelector()   //选择器要加符号

    参数:   .类名      #id名

     

    返回指定选择器的所有元素对象

    document.querySelectorAll()

     

    获取body元素  

    document.body()

     

    获取html元素   

    document.documentElement()

     

     

    事件

    三部分  事件源(事件被触发的对象)  事件类型(触发什么事件 鼠标点击/经过/键盘响应) 事件处理程序(函数)

     

    执行事件三要素  获取事件源 绑定事件 添加事件处理程序

     

    改变元素内容 属性  赋值

    元素.innerText = '内容'   

    不识别html标签  非标准 

    可获取元素内容 显示去除空格和换行

     

    元素.innerHtml= '内容'  

    标准

    可获取元素内容  显示保留空格和换行

     

    表单元素的操作

    替换显示的内容   input.value =''

    获得焦点 onfocus

    失去焦点 onblur

    如需要点击表单后不再被点击 设置button.disabled =true

     

    样式属性操作

    行内样式操作  element.style

    类名样式操作   element.className = '预定义的类名';  //要保留,把原来的也写上

    展开全文
  • 定义了每个集合里面所有对象的属性和方法,对象是类实例。实例化:创建一个类实例,类具体对象方法:类中定义函数。正则表达式:正则表达式 是 一个完整字符串从左到右匹配字符串样式。正则表达式可以从...

    类 class:用来描述具有相同属性和方法的对象的集合。定义了每个集合里面所有对象的属性和方法,对象是类的实例。

    实例化:创建一个类的实例,类的具体对象

    方法:类中定义的函数。

    正则表达式:正则表达式  是 一个完整的字符串从左到右匹配字符串的样式。正则表达式可以从一个完整的字符串中进行字符替换,验证表单,提取字符串等操作。

    1. 基本匹配:正则表达式其实就是执行搜索时的格式,由一些字母和数字组合组成。

    the     由字母t开始,接下来是h,接下来是e。

    2. 正则表达式主要依赖于元字符。

    点运算符:   .                 如.ar     匹配任意字符后面跟着ar。

    字符集     【】                [Tt]he     匹配  the   和The

    否认字符集:               ^表示字符串的开头,   [^t]he    匹配一个后面跟着he ,除了t的字符串。

    重复次数:  后面跟着  *+?     指定匹配子模式的次数。

    *   在*号之前的字符出现大于等于0次。             [a-z]* 匹配一个行中所有以小写字母开头的字符串.

    +号匹配+号之前的字符出现 >=1 次.                                 c.+t 匹配以首字母c开头以t结尾,中间跟着任意个字符的字符串

    在正则表达式中元字符 ? 标记在符号前面的字符为可选, 即出现 0 或 1 次.                 例如, 表达式 [T]?he 匹配字符串 he 和 The.

    {}   量词, 用来表示出现的次数。   [0-9]{2,3}      匹配2到3位,数字0-9的数字。                   [0-9]{2,3}      匹配2至少2位,数字0-9的数字。

    3. |运算符: 或运算符。      (T|h)he|car    用来匹配  the  或 The  或car

    4.瞄点:   指定开头后者结尾的要用瞄点,  ^指定开头,$指定结尾。

    ^ 用来检查匹配的字符串是否在所匹配字符串的开头                  ^(T|t)he 匹配以 The 或 the 开头的字符串

    $ 号用来匹配字符是否是最后一个       (at\.)$ 匹配以 at. 结尾的字符串.

    展开全文
  • 值对象 《实现领域驱动设计》对值对象的定义:通过对象属性值来识别的对象,它将多个相关属性组合为一个概念...那这个集合里面有什么呢?若干个用于描述目的、具有整体概念和不可修改的属性。 那这个集合存在的意义又是

    值对象也是领域模型中的领域对象。

    应尽量使用值对象建模而非实体。即便一个领域概念必须建模成实体,在设计阶段也应更偏向于将其作为值对象。因为它可以非常容易进行创建、测试、使用、优化和维护。

    1 为什么使用值对象?

    曾经我们都滥用实体建模。在用户和权限等概念进入协作领域前,实体建模并没有带来什么坏处。在项目启动时,釆用了常用的建模方式:将领域模型中所有属性映射到对应的数据库表。并且为所有属性创建setter/getter。由于每个对象都有一个数据库主键,各个实体被组织在了一个庞大且复杂的对象网。这种建模方式是一种数据建模方式,很大程度受关系型DB影响,认为所有都需范式化,并通过外键关联引用。但其实全然面向实体的思维方法不仅没必要,而且还浪费开发时间。

    在将领域概念建模成值对象时,应将通用语言考虑在内,这是建模值对象的首要原则。

    那如何确定一个领域概念是否应该建模成一个值对象呢?就需要理解值对象的特征。

    2 值对象的特征

    考虑一个领域概念是否有如下特征:

    • 度量或描述了领域中的一件东西
    • 可作为不变量
    • 将不同的相关的属性组合成一个概念整体(Conceptual Whole)
    • 当度量和描述改变时,可以用另一个值对象予以替换
    • 可以和其他值对象进行相等性比较
    • 不会对协作对象造成副作用

    当你只关心某个对象的属性时,该对象便可作为一个值对象。为其添加有意义的属性,并赋予它相应的行为。需要将值对象看成不变对象,不要给它任何身份标识, 还应尽量避免像实体对象一样的复杂性。

    在设计得当时,我们可创建和传递值对象实例,甚至在用完后直接扔了。不用担心客户端对值对象的修改。一个值对象的生命周期可长可短,就像个无害的红细胞在系统中来往。

    从该角度来看待值对象是个很大转变,就像从没有GC的语言转变到有GC语言。

    《实现领域驱动设计》对值对象的定义:通过对象属性值来识别的对象,它将多个相关属性组合为一个概念整体。DDD中描述领域的特定方面,并且是一个没有标识符的对象。

    值对象本质上就是一个集。该集合有若干用于

    • 描述目的
    • 具有整体概念
    • 不可修改

    的属性。该集合存在的意义是在领域建模的过程中,值对象可保证属性归类的清晰和概念的完整性,避免属性零碎。

    3 案例

    人员实体包括:姓名、年龄、性别及所在省、市、县和街道等属性。这样显示地址相关属性就很零碎。
    可将“省、市、县和街道等属性”拿出来构成一个“地址属性集合”,该集合就是值对象

    4 值对象的形态

    4.1 业务形态

    值对象是DDD领域模型中的一个基础对象,跟实体一样源于事件风暴所构建的领域模型,都包含若干属性,与实体一起构成聚合。

    实体是业务对象,具有业务属性、业务行为和业务逻辑。
    值对象只是若干个属性的集合,只有

    • 数据初始化操作
    • 有限的不涉及修改数据的行为
    • 基本不包含业务逻辑

    值对象的属性集虽然在物理上独立,但在逻辑上仍是实体属性的一部分,以描述实体的特征。

    也有部分共享的标准类型的值对象,它们有自己的限界上下文及持久化对象,可建立共享的数据类微服务,比如数据字典。

    4.2 代码形态

    如果值对象是

    • 单一属性,直接定义为实体类的属性
    • 属性集,设计为类,包含具有整体概念的多个属性,这样的值对象无ID,会被实体整体引用

    比如电商系统中的Person用户实体:

    • 有单一属性的值对象,比如id、name
    • 也包含多个属性的值对象,比如address

    4.3 运行形态

    除数据初始化和整体替换的行为,少有更多业务行为。

    比如一个用户实体可有多个收货地址,多地址序列化后可嵌入人员的地址属性。值对象创建后不允许修改,只能用另外一个值对象来整体替换
    若将值对象嵌入到实体,有如下方式:

    4.3.1 属性嵌入

    当引用如下之一:

    • 单一属性的值对象
    • 只有一条记录的多属性值对象的实体

    4.3.2 序列化大对象

    当引用一或多条记录的多属性值对象的实体时。

    • 以序列化大对象方式形成的人员实体对象,收货地址值对象被序列化成大对象JSON串后,嵌入人员实体

    4.4 DB形态

    设计值对象是期望转“数据建模为中心”为“领域建模为中心”,减少 DB 表的复杂度。

    5 值对象简化DB的最佳实践

    传统数据建模大多根据数据库范式设计,每个数据库表对应一个实体,每个实体的属性值用单列存储,一个实体主表会对应N个实体从表。
    而值对象简化了DB设计,多采用反范式,值对象的属性值和实体对象的属性值保存在同一DB实体表

    比如人员和地址,要设计实体和数据模型,有如下解决方案:

    1. 把地址值对象的所有属性放入人员实体表,创建人员实体、人员数据表
      会破坏地址的业务含义和概念完整性
    2. 创建人员和地址两个实体,同时创建人员和地址两张表
      增加了不必要的实体和表,需要处理多个实体和表的关系,导致数据库复杂性剧增

    有没有一种设计可使得业务含义清晰,又不让数据库变复杂?综合以上方案优势,扬长避短:

    • 领域建模时,把地址作为值对象,人员作为实体,即可保留地址的业务含义和概念完整性
    • 数据建模时,将地址的属性值嵌入人员实体数据库表,只创建人员数据库表。这既可兼顾业务含义和表达,又不会复杂化DB

    值对象就是通过该方式,简化DB设计:

    1. 领域建模时,将部分对象设计为值对象,保留对象的业务含义,同时又减少了实体数量
    2. 数据建模时,我们可以将值对象嵌入实体,减少实体表的数量,简化DB设计

    要发挥对象的威力,就需优先领域建模,弱化DB作用,只把DB作为一个保存数据的仓库。即使违反DB设计原则,也不必大惊小怪,只要业务能顺利运行,无伤大雅。

    分析

    虽然优势是可简化DB复杂度。但若使用不当,优势就会成劣势。所以必须理解值对象的适用场景。

    值对象采用序列化大对象的方式简化DB设计,减少实体表的数量,可简单、清晰表达业务概念。该方式虽然降低DB设计复杂度,却无法满足基于值对象的快速查询,导致搜索值对象的属性值变难。

    值对象采用属性嵌入的方式提升了DB性能,但若实体引用的值对象过多,则会导致实体堆积一堆缺乏概念完整性的属性,这样值对象就会失去业务含义,操作也不方便。

    所以对照优劣势并结合实际业务场景,才能发挥值对象的最大作用。

    6 实体 V.S 值对象

    主要区别如下:

    • 实体有唯一性,值对象没有。比如用户具有唯一性,一旦某用户被系统管理,它就被赋予了在事件、流程和操作中被唯一识别的能力
    • 实体着重唯一性和延续性,不在意属性的变化,属性全变了,它还是自己;值对象着重描述性,对属性变化敏感,属性变了,它就不是自己了
    • 实体和值对象也可能随着系统业务关注点的不同而更换位置。比如,如果另一个限界上下文更关注地址,而不关注与这个地址产生联系的人员,那就把地址设计成实体,人员设计成值对象

    比如多人的单位地址是一样的,怎么处理:

    • 许多人可能属同一地址
    • 许多地址也可能属同一人

    所以人和地址既可分别作为实体而把对方作为值对象,也可共同作为实体描述业务,这正是业务设计的意义,而不是非黑即白。

    DDD提倡从领域模型设计出发,而非先设计数据模型。
    传统数据模型设计通常一个表对应一个实体,一个主表关联多个从表,当实体表太多,就很容易陷入复杂DB设计,领域模型就很容易被数据模型绑架。
    在领域模型中人员是实体,地址是值对象,地址值对象被人员实体引用。
    设计数据模型时

    • 地址值对象可作为一个属性集整体嵌入人员实体
    • 也可以序列化大对象的形式加入人员的地址属性

    同样一个对象在不同场景,可能设计不同:

    • 地址会被某一实体引用,只描述实体,并且其值只能整体替换,这时就可将地址设计为值对象,比如收货地址
    • 地址会被经常修改,地址作为一个独立对象存在,这时应设计为实体,比如行政区划中的地址信息

    参考

    • 实体和值对象:从领域模型的基础单元看系统设计
    • 《实现领域驱动设计》
    展开全文
  • Collection与Collections   Java Collections框架中包含了大量的集合接口以及这些接口...  Collection是整个集合框架基础,它里面存储一组对象来表示不同类型Collections,他作用是提供维护一组对象的基本接
  • 里氏替换原则的思想是:”基类可实现的功能,子类也可以实现”,下面代码,假设有一个List参数的方法C,里面的逻辑是根据索引找到相应的集合元素,那么当需要list的实现类的索引查找功能时,可以将list的实现类...
  • 嗯 是光盘里面的内容,书太厚咧没法影印啊 《Oracle11g宝典》共分19章,第1~4章分别介绍了Oracle11g的下载和安装、SQL*Plus的使用、SQ语言与PL/SQL.程序设计,第5~9章分别介绍了Oracle11g的体系结构、表空间与...
  • Android 上百实例源码分析以及开源分析 集合打包4

    千次下载 热门讨论 2012-07-10 21:54:03
    ContactListActivity 程序的启动页,内部含有控制地图以及Jade连接等操作,方法onConnected 是JadeGateWay里面的回调方法。 ChatActivity 是聊天的主界面,主要通过JadaGateway操作连接,发送,接受等 ...
  • 作为一个工具类,首先它里面的方法都是静态的。它没有对外提供构造函数,是不需要创建对象的,因为它的对象当中并未去封装特有数据,都是共享型的情况下,定义成静态最方便。它的里面有一堆方法,都有什么用呢?我...
  • s:iterator多层迭代

    2015-10-23 15:22:00
    struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等 以下几个简单的demo:s:iterator 标签有3个属性:value:被迭代的集合id:指定集合里面的元素的id,可以和var属性替换, var 集合对象status :迭代...
  • jQuery基础之2

    2016-11-20 18:27:00
    原生绑定事件对象replaceWith 替换 replaceAll把某一个标签替换成另一个标签empty () 销毁掉里面的子节点remove 删除jQ对象,本身绑定的事件会删除掉detach 删除jQ对象,本身绑定的事件会删除掉 get方法获得的是...
  • 接口二

    2017-07-28 16:51:00
    ArrayList(API中说初始容量为10的, 注意这个问题), LinkedList 有顺序, 可以重复添加 get //往里面填一个参数,获取list集合里面的某一个元素c.get(index);//括号里的值为相对应元素的下标的值 set(有一个返回值...
  • Lazyload 延迟加载效果

    2010-02-02 21:26:00
    停止或不加载集合里面的元素(隐藏或替换等方法)。 然后历遍集合元素,当元素在加载范围内,再进行加载。 加载范围一般是容器的视框范围,即浏览者的视觉范围内。 当容器滚动或大小改变时,再重新历遍元素判断。 ...
  • 我们知道Python中是没有数组 这种数据结构的,...然后按照旋转规律依次替换里面的值最外层的循环代表替换一圈数据,这一圈数据在数组中的形状是一个矩形,我们分析可以知道,最后一轮循环有两种情况:1、替换一圈(矩...
  • 我们知道Python中是没有数组 这种数据结构的,...然后按照旋转规律依次替换里面的值最外层的循环代表替换一圈数据,这一圈数据在数组中的形状是一个矩形,我们分析可以知道,最后一轮循环有两种情况:1、替换一圈(矩...
  • 首先创建一个n*m全为零的矩阵,然后按照旋转规律依次替换里面的值 最外层的循环代表替换一圈数据,这一圈数据在数组中的形状是一个矩形,我们分析可以知道,最后一轮循环有两种情况: 1、替换一圈(矩形)数据 2、...
  • Java容器

    2020-06-01 21:00:24
    该框架中包含了大量集合接口以及这些接口实现类和操作他们算法(排序,查找,反转,替换,复制,取最小大元素),提供了List、Queue、Set、Stack、Map等数据结构;(List、Queue、Set、Stack)继承了 ...
  • 数据库连接池原理是,开始就在内存中开辟一块空间(集合),先往池子里面放置多个连接对象。后面需要连接话,直接从池子里面取,不需要自己创建连接。使用完毕之后归还连接确保连接对象能循环利用。 1、Tomcat ...
  • javascript函数解释

    2011-02-26 11:03:52
    javascript函数解释,解释了具体函数功能,一、函数JavaScript函数集合 1.document.write(""); 输出语句 2.JS中注释为// 3.传统HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中DOM顺序是:...
  • C#23种设计模式

    2013-06-02 16:49:43
    (100块钱一份,你要不要) 原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不需要非得有...
  • 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。 定义算法集合,分别封装起来,让它们...
  • 如果以上两个条件成立,那么书写操作数据库的代码很简单:只需呼叫FacadeForDAO.findModel(表名)方法,在表名参数给出实际数据库中表的名称就可以返回一个包含对应POJO类的对象集合--非常简单--输入表名得到Java...
  • 原始模型模式: 原始模型模式 通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原 型对象的方法创建出更多同类型的对象。 原始模型模式允许动态的增加或减少产品类, 产品 类不需要非得有任何事先...
  • 备注:CorelDRAW X4增强插件合集包所谓的北极鱼原创只是把所有的插件集合起来打了个安装包,安装包为本人原创,而非里面的插件为原创。里面所有的插件均收集与网络,版权归原作者所有。 该补丁运行方式:如果你使用...
  • java面试题

    2018-04-27 19:55:38
    答:String是不可变的对象,每次对String类型进行改变都相当于产生了一个新的对象,StringBuffer是可变的字符序列,所以如果要经常改变某个字符串的话建议使用StringBuffer。 list、set、map问题? 答:set 不允许...
  • 正则表达式

    2014-12-03 14:51:39
    正则表达式是一个描述字符模式的对象。 JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法. 在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,...

空空如也

空空如也

1 2 3
收藏数 52
精华内容 20
关键字:

替换集合里面的对象