java的framework_JAVA FRAMEWORK

1.新集合接口.

(1)Deque:双端队列,支持两端的插入和移出,扩展了Queue。

(2)BlockingDeque:支持接下来操作的Deque,当读取一个元素时,等待Deque成为非空;当存储一个元素时,等待空间可用。扩展了Deque和

BlockingQueue。这个接口是java.util.concurrent的一部分。

(3)NavigableSet:扩展了导航方法,为了给定搜索目标,提供最匹配结果的SortedSet。NavigableSet可以在升序或降序,被访问和移动。这

个接口用来代替SortedSet接口。

(4)NavigableMap:扩展了导航方法,返回给定搜索目标最匹配结果的SortedMap。NavigableMap可以在升序或降序,被访问和移动。这个接口

用来代替SortedMap接口。

(5)ConcurrentNavigableMap:一个并发的NavigableMap。这个接口是java.util.concurrent的一部分。

2.新集合接口的实现类.

(1)ArrayDeque:实现Deque接口的高效率可变长的数组。

(2)ConcurrentSkipListSet:实现NavigableSet接口,可量测的,并发的,可跳跃的列表实现。

(3)ConcurrentSkipListMap:实现ConcurrentNavigableMap接口,可量测的,并发的,可跳跃的列表实现。

(4)LinkedBlockingDeque:实现BlockingDeque接口,可量测的,并发的,可选FIFO(First-In,First-Out)模块化的以链接点为基础的Deque。

(5)AbstractMap.SimpleEntry:Map.Entry简单的易变的实现。

(6)AbstractMap.SimpleImmutableEntry:Map.Entry简单的不变的实现。

3.存在类的被重新实现新的接口。

(1)LinkedList:重新实现了Deque接口。

(2)TreeSet:实现NavigableSet接口。

(3)TreeMap:实现NavigableMap接口。

4.两个新方法是被加入到Collections工具类中。

(1)newSetFromMap(Map):从一个通过的Map实现,创建一个通用的Set实现。

这没有IdentityHashSet类,替代的,仅仅使用了:

SetidentityHashSet=Collections.newSetFromMap(newIdentityHashSet());

(2)asLifoQueue(Deque):返回一个后进先出LIFO(Last-In,First-Out)的队列Deque视图。

5.Arrays工具类,现在有copyOf和copyOfRange方法有效的改变大小,截取,为了所有类型的数组复制子数组。

之前:

int[]newArray=newint[newLength];

System.arrayCopy(oldArray,0,newArray,0,oldArray.length);

之后:

int[]newArray=Arrays.copyOf(a,newLength);

6.Deque(DoubleEndsQueue)[deck(发音)]?

(1)线性集合,支持元素的,两端插入,移出。

(2)支持,元素限制。

(3)提供insert,remove,examine方法,这些方法提供两种形式:

[1]操作失败,一部分抛出异常,一部分返回特殊值(null或false,依赖方法。)。

[2]元素限制的Deque实现,insert操作是被特殊设计;许多实现插入操作不可能失败。

(4)继承Queue接口,作为Queue使用,结果为FIFO(First-In-First-Out).

(5)也可以用作Stack使用,结果为FILO(First-In-Last-Out)。

(6)提供两个方法,移出内部数据,removeFirstOccurrence和removeLastOccurrence。

(7)该接口不支持索引访问元素。

(8)Deque,实现类不严格要求,阻止null,但是是被推荐阻止null。不被鼓励使用的原因,null是被一些方法做为特殊的返回值,指示Deque为空。

(9)Deque,不针对不同类型的元素,实现equals和hasCode方法,代替的是继承基于同一类型的类对象。

(10)该接口属于JavaCollectionsFramework。

(11)since1.6。

7.ArrayDeque?

(1)实现Deque接口,没有元素限制。

(2)非线程安全,不支持同步,并发操作。

(3)不允许有空元素。

(4)作为堆栈,快于Stack;作为队列,快于LinkedList。

(5)除了,以下方法remove、removeFirstOccurrrence、removeLastOccurrence、contains、iterator.remove、批量操作,其它都是线性时间执行。

(6)iterator方法返回的Iterators是fail-fast:如果Iterator创建后,除了Iterator的remove方法,Deque被任何方式,时间修改,将抛出

ConcurrentModificationException。因此,并发修改时候,iterator快速明确的舍弃,胜于冒任意,在不确定时间的不确定行为等未来不可预知的风险。

(7)ConcurrentModificationException,被推荐用来检查程序Bug,不被推荐用来保证并发修改。

(8)该类实现了Collection和Iterator接口的所有可选方法。

(9)该类属于JavaCollectionsFramework。

(10)since1.6。

8.BlockingDeque?

(1)支持模块化操作的Deque,取元素时,等待Deque成为非空。存储元素时,等待空间成为可用。

(2)BlockingDeque方法有四种形式,不同方式的处理操作不能立即感到满意,但可能在未来一些时候,感到满意:

[1]抛出异常。

[2]返回特殊值(根据方法,返回null或false)。

[3]阻塞当前线程,直到操作执行成功。

[4]阻塞指定时间后,放弃。

(3)像不同形式的BlockingQueue一样,该类是线程安全。

(4)不允许空元素

(5)可选,限制元素,与否。

(6)作为FIFOBlockingQueue使用。

(7)内存结合影响:像别的并发集合操作,在一个线程周期内,放置一个BlockingDeque,在子Deque插入或移出前。

(8)该接口属于JavaCollectionsFrameWork。

(9)since1.6。

9.LinkedBlockingDeque?

(1)可选的元素限定,基于线性结点的模块化Deque。

(2)可选的元素限定,可以作为预防过多的扩张。

(3)元素限定capacity没有指定,默认为Integer.MAX_VALUE。

(4)线性结点是被动态创建于每次插入元素之上的,除了capacity指定的Deque。

(5)除了以下方法remove、removeFirstOccurrence、removeLastOccurrence、contains、iterator.remove、批量操作,其它花费时间都是线性的。

(6)该类实现了Collection和Iterator接口的所有可选方法。

(7)该类属于JavaCollectionsFramework。

(8)since1.6。

10.NavigableSet?

(1)实现导航方法,并返回指定搜索目标的最接近匹配结果的SortedSet。

(2)方法lower、floor、ceiling、higher,返回元素分别是比给定元素小于、小于或等于、大于或等于、大于的元素。没有该元素,则返回

null。

(3)可以被访问,升序或降序。

(4)descendingSet返回所有相关的,反方向的元素视图。

(5)升序操作快于降序操作。

(6)加之定义了,pollFirst和pollLast方法。返回并移动最大和最小的元素。不存在此元素,返回null。

(7)方法subSet、headSet和tailSet不同于SortedSet的同名方法,接受附加的描述小的,大的相对排外的界定参数。

(8)任何NavigableSet的子接口实际类,都得实现NavigableSet接口。

(9)navigation方法的返回值是不确定的,在实现阻止null元素的实现类中。通过使用contains(null)方法来检测,消除歧义。

(10)为了避免这个问题,这个接口的实现类是鼓励阻止插入null值的。

注意:Comparable排序的set本质上是不允许null值。

(11)方法subSet(E,E)、headSet(E)和tailSet(E)是被指定返回实现NavigableSet的SortedSet,为了兼容允许SortedSet的实现类存在,但是,

这个接口的扩展接口或实现类,鼓励重载这些方法,返回NavigableSet。

(12)该类属于JavaCollectionsFramework。

(13)since1.6。

11.ConcurrentSkipListSet?

(1)可量测的,并发的,基于ConcurrentSkipListMap,NavigableSet方法。

(2)这些元素被排序根据他们的自然顺序,或通过创建Set时的Comparator,依赖使用的构造方法。

(3)这个实现类提供了log(n)时间花费的contains、add、remove方法和变量。

(4)支持多线程并发插入,移出,访问。

(5)Iterator实现是弱的,返回元素在一些点或创建Iterator时,是反映Set状态的。他们不抛出ConcurrentModificationException异常,可以

并发别的操作。升序的Iterator和视图,快于降序。

(6)小心,不像大多数集合,size方法不是常量时间的操作。因为这些Set是不同步的,决定元素的个数是需要元素的往返移动。

(7)批量操作,addAll、removeAll、retainAll、containsAll,是不保证原子执行的。

举例:一个iterator和addAll并发,浏览的数据可能是加入的一部分。

(8)这个类和他的iterator实现了,Set和Iterator接口可选的所有方法。像多数别的并发集合实现,这个类不允许null元素,因为,null元素

和返回值null,不能被正确区分。

(9)该类属于JavaCollectionsFramework。

(10)since1.6。

12.NavigableMap?

(1)扩展了导航方法并返回给定搜索目标的最接近匹配结果的SortedMap。

(2)lowerEntry、floorEntry、ceilingEntry、higherEntry返回比给定key小于、小于等于、大于等于、大于的key所关联的Map.Entry对象。没

有这样的key,返回null。

(3)同样的,lowerKey、floorKey、ceilingKey、higherKey方法,仅仅返回关联key。

(4)以上方法,被设计,定位但不移动条目。

(5)可以通过升序或降序的key来访问和移动条目。

(6)descendingMap方法返回一个所有关系、方向上相反的视图。

(7)升序操作和视图快于降序。

(8)subMap、headMap、tailMap不同于SortedMap中的同名方法,接受附加的描述小的,大的相对排外的界定参数。

(9)任何NavigableMap的子接口实现类,必须实现NavigableMap接口。

(10)接口加之定义了firstEntry、pollFirstEntry、lastEntry、pollLastEntry返回或返回并移动最小或最大的映射。不存在则返回null。

(11)返回Entry方法的执行是期望返回记录映射建造时快照的Map.Entry,因此通常不支持可选的Entry.setValue方法。

注意:使用put方法可以改变关联中Map的映射。

(12)subMap(K,K)、headMap(K)、tailMap(K)是被指定返回实现NavigableMap的SortedMap,为了兼容允许SortedMap的实现类存在,但是,

这个接口的扩展接口或实现类,鼓励重载这些方法,返回NavigableMap。同样,可以重载SortedMap.keySet()方法返回NavigableMap。

(13)该类属于JavaCollectionsFramework。

(14)since1.6。

13.ConcurrentNavigableMap?

(1)支持导航操作的ConcurrentMap。

(2)该类属于JavaCollectionsFramework。

(3)since1.6。

14.ConcurrentSkipListMap?

(1)可量测的、并发的ConcurrentNavigableMap实现类。该Map是被排序根据key的自然顺序,或创建时,根据comparator排序,依赖于构造函数。

(2)该实现类实现了一个并发的SkipLists变量,提供了一个预期的平均log(n)执行时间的containsKey、get、put、remove操作和变量。

(3)插入,移出,更新,访问操作支持多线程并发。

(4)Iterator是弱实现的,在有时或Iterator创建时,返回的元素反映了Map的状态。不抛出ConcurrentModificationException异常,可以继续执

行其它操作。

(5)升序key的排序视图和Iterator是快于降序的。

(6)这个类中方法返回的Map.Entry和视图,表现了他们创建时的映射的一个快照。他们不支持Entry.setValue操作。

注:使用put,putIfAbsent,replace可能改变关联的映射,依赖于你需要的严密性。

(7)小心,不像大多数集合实现类,size方法不是常量时间执行的。因为这些Map是异步,决定元素的个数是需要元素的往返移动。

(8)putAll,equals,clear是不保证原子执行的。

例如:iterator操作和putAll并发操作,显示的视图可能是加入的一部分元素。

(9)这个类实现了Map、Iterator接口的所有可选方法。像许多别的并发实现类,该类不允许null元素,因为,null元素和返回值null,不能被正确

区分。

(10)该类属于JavaCollectionsFramework。

(11)since1.6。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
框架说白了就是JAVA工作者多年以来总结出的一些开发标准。让我们可以以成功的经验模式来开发我们自已的系统,一般使用框架的好处是 ·在好的框架下,开发者只需要写一些必须的代码;他们不需要直接接触底层的API。 这一点很重要。 ·经过良好设计的框架可以为程序提供清晰的结构并且提高程序的内聚性。好清晰的结构使得其他人可以更容易加入项目。 ·一个容易使用的框架可以通过一些例子和文档为用户提供最佳实践。 ·采用成功的框架的代码比自己的代码容易测试 J2EE本身提供了一些框架。比如, Enterprise Java-Beans (EJB) container或者 Servlet engine 而这些框架一般在中小工程中我们都不会使用,会让我们把大量的时间浪费在开发框架上。 而现在比较流行开源框架,主要是struts,hibernate,spring等 比如struts是在原有mvc基础上实现在代码分离等功能,非常好用。 而hibernate可以把我们的关系型数据库转换成我们在JAVA中的面像对像来使用。从而让我们在开发时不需要直接写SQL语句,比如database.getName();就可以直接把数据库中的用户名取出来。 Spring J2EE框架被大规模地运用到项目中,而项目总要负责这些框架以及自己业务代码的连接,使之真正融合到一起。Spring就是专注于这个问题的,它和Hibernate融合的很好。 这三种框架在一起并不冲突,所以现在最常用的框架就是 struts+hibernate+spring就像我们盖房子一样,先把框架搭好,我们在在上面写代码就很规范。 Struts框架介绍 : Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的 Action,也为V(View)提供了一系列定制标签(Custom Tag)。但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。 Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实 现J2EE的应用;DAO/ORM的实现方便我们进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。 就是说可将两者一起使用,达到将两者自身的特点进行互补。 spring 框架介绍 : 它关注的领域是其他许多流行的Framework未曾关注的。Spring要提供的是一种管理你的业务对象的方法。 Spring既是全面的又是模块化的。Spring有分层的体系结构,这意味着你能选择仅仅使用它任何一个独立的部分,而它的架构又是内部一致。 因此你能从你的学习中,得到最大的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。 它的设计从一开始就是要帮助你编写易于测试的代码。Spring是使用测试驱动开发的工程的理想框架。 Spring不会给你的工程添加对其他的框架依赖。Spring也许称得上是个一站式解决方案,提供了一个典型应用所需要的大部分基础架构。它还涉及到了其他framework没有考虑到的内容。 尽管它仅仅是一个从2003年2月才开始的开源项目,但Spring有深厚的历史根基。 Spring架构上的好处 在我们进入细节之前,让我们来看看Spring能够给工程带来的种种好处: Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他为J2EE的 API特制的framework,Spring致力于解决剩下的问题。 Spring能消除在许多工程中常见的对Singleton的过多使用。根据我的经验,这是一个很大的问题,它降低了系统的可测试性和面向对象的程度。 通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。曾经对某个类要寻找的是哪个 魔法般的属性项或系统属性感到不解,为此不得不去读Javadoc甚至源编码?有了Spring,你仅仅需要看看类的JavaBean属性
请解释下这段Android.mk# ==== the metalava api stubs and current.xml =========================== include $(CLEAR_VARS) LOCAL_SRC_FILES:=$(framework_docs_LOCAL_API_CHECK_SRC_FILES) LOCAL_GENERATED_SOURCES:=$(framework_docs_LOCAL_GENERATED_SOURCES) LOCAL_SRCJARS:=$(framework_docs_LOCAL_SRCJARS) LOCAL_JAVA_LIBRARIES:=$(framework_docs_LOCAL_API_CHECK_JAVA_LIBRARIES) LOCAL_MODULE_CLASS:=$(framework_docs_LOCAL_MODULE_CLASS) LOCAL_DROIDDOC_SOURCE_PATH:=$(framework_docs_LOCAL_DROIDDOC_SOURCE_PATH) LOCAL_ADDITIONAL_JAVA_DIR:=$(framework_docs_LOCAL_API_CHECK_ADDITIONAL_JAVA_DIR) LOCAL_ADDITIONAL_DEPENDENCIES:=$(framework_docs_LOCAL_ADDITIONAL_DEPENDENCIES) LOCAL_MODULE := metalava-api-stubs LOCAL_DROIDDOC_USE_METALAVA := true LOCAL_DROIDDOC_METALAVA_PREVIOUS_API := prebuilts/sdk/api/27.txt LOCAL_DROIDDOC_METALAVA_ANNOTATIONS_ENABLED := true LOCAL_DROIDDOC_METALAVA_MERGE_ANNOTATIONS_DIR := tools/metalava/manual LOCAL_DROIDDOC_STUB_OUT_DIR := $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/metalava_android_stubs_current_intermediates/src INTERNAL_PLATFORM_METALAVA_PUBLIC_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/metalava_public_api.txt INTERNAL_PLATFORM_METALAVA_PUBLIC_REMOVED_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/metalava_removed.txt LOCAL_DROIDDOC_OPTIONS:=\ $(framework_metalava_docs_LOCAL_DROIDDOC_OPTIONS) \ --api $(INTERNAL_PLATFORM_METALAVA_PUBLIC_API_FILE) \ --removed-api $(INTERNAL_PLATFORM_METALAVA_PUBLIC_REMOVED_API_FILE) \ -nodocs LOCAL_UNINSTALLABLE_MODULE := true include $(BUILD_DROIDDOC)
06-13

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值