List 集合类是顺序线性表,Add操作是O(1)或是O(n)的,由于List的容量是动态扩容的,在未扩容之前,其Add操作是O(1),而在需要扩容的时候,会拷贝已存在的那些元素同时添加新的元素,此时的Add操作是O(n)的.而对于Contains方法,其是按照线性检索的,其复杂度是O(n).而BinarySearch方法,其是按二分查找的,其复杂度是O(lg n). SortedList集合类是有序线性表,Add操作是O(n),       其Contains方法是通过二分查找检索元素的,因此…
List 集合类是顺序线性表,Add操作是O(1)或是O(n)的,由于List的容量是动态扩容的,在未扩容之前,其Add操作是O(1),而在需要扩容的时候,会拷贝已存在的那些元素同时添加新的元素,此时的Add操作是O(n)的.而对于Contains方法,其是按照线性检索的,其复杂度是O(n).而BinarySearch方法,其是按二分查找的,其复杂度是O(lg n). SortedList集合类是有序线性表,Add操作是O(n), 其Contains方法是通过二分查找检索元素的,因此复杂度是O(…
常用集合类及构建自定义集合 1.更多集合接口:IList<T>.IDictionary<TKey,TValue>.IComparable<T>.ICollection<T> 2.主要集合类:List<T>.IDictionary<TKey,TValue>.SortedDictionary<TKey,TValue>和SortedList<T>        Stack<T>.Queue<T>…
常用集合接口系列:http://www.cnblogs.com/fengxiaojiu/p/7997704.html 常用集合类系列:http://www.cnblogs.com/fengxiaojiu/p/7997541.html 大多数集合都在System.Collections,System.Collections.Generic两个命名空间.其中System.Collections.Generic专门用于泛型集合. 针对特定类型的集合类型位于System.Collections.Spec…
常用集合接口系列:http://www.cnblogs.com/fengxiaojiu/p/7997704.html 常用集合类系列:http://www.cnblogs.com/fengxiaojiu/p/7997541.html 常用集合类: 数组(Array)的不足(即:集合与数组的区别) 1. 数组是固定大小的,不能伸缩.虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化.随后以前的数组就废弃!而集合却是…
Foundation框架中常用的类有:NSString.NSArray.NSSet.NSDictionary 以及它们对应的子类 NSMutableString.NSMutableArray.NSMutableSet.NSMutableDictionary,父类统一为不可变而子类可变,还包括NSDate.NSObject 可变和不可变的区别是对象内容的可变和不可变,子类既然是继承父类那么子类可以使用父类中的任意方法 1.NSString类的操作 使用NSString类的对象初始化方法创建字符串…
上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等 所有的类都实现了Iterator接口,这是一个用于遍历结合中元素的接口,主要包含了hasNext(),remove(),next()三个方法,它的一个子接口LinkIterator在它的基础上又添加了三种方法,分别…
这篇笔记对几个常用的集合实现,从效率,线程安全和应用场景进行综合比较. >>ArrayList.LinkedList与Vector的对比 (1)相同和不同都实现了List接口,使用类似.Vector和ArrayList的底层实现都是数组,这一点与LinkedList的双向链表不同.Vector和ArrayList在更多元素添加进来时会请求更大的空间.Vector每次请求其大小的双倍空间,而ArrayList每次对size增长50%.(2)线程安全ArrayList.LinkedList都没有进…
在Java中有一套设计优良的接口和类组成了Java集合框架,使程序员操作成批的数据或对象元素极为方便.所有的Java集合都在java.util包中. 在编写程序的过程中,使用到集合类,要根据不同的需求,来决定使用哪种集合类,比如,要经常遍历集合内元素,就要使用List,如果要保证集合中不存在重复的数据,就要用Set;如果要通过某一键来查找某一值,就要使用Map. 1).列表  List接口(继承于Collection接口)及其实现类    List接口及其实现类是容量可变的列表,可按索引访问集合…
Framework集合框架是一个统一的架构,用来表示和操作集合.集合框架主要是由接口,抽象类和实现类构成.接口:蓝色:实现类:红色Collection|_____Set(HashSet)|         |_____SortedSet(TreeSet)|_____List(LinkedList,ArrayList) Collection:集合层次中的根接口,JDK没有提供这个接口的实现类.Set:不能包含重复的元素,子接口SortedSet是一个按照升序排列的元素的Set.List:可以包含重…
1.Java最常用的集合类 Collection接口 List接口(允许有重复元素):ArrayList.LinkedList.Vector.Stack Set接口(不允许有重复元素,可用于去重操作):HashSet.TreeSet Map接口 HashMap TreeMap(具有按key排序的功能) 2.对于Collection需要掌握的七点内容 Collection的创建:即构造器,掌握在构造器方法中Collection的实现类做了一些什么 往Collection中添加对象:即add(E)方…
一.先来说说数组的不足(也可以说集合与数组的区别): 1.数组是固定大小的,不能伸缩.虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化.随后以前的数组就废弃!而集合却是可变长的 2.数组要声明元素的类型,集合类的元素类型却是object. 3.数组可读可写不能声明只读数组.集合类可以提供ReadOnly方法以只读方式使用集合. 4.数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用.集合也是…
图一:java collection 类图 Queue家族 无论是queue还是stack,现在常用的是Deque的实现类:如单线程的ArrayQueue,多线程的ArrayBlockingQueue Deque:读作“deck”,算是一种“双端队列”,即支持头部和尾部的数据访问和增删.----支持stack和queue的操作 关系:ArrayDeque --> Deque(I) -> Queue(I) -> Collection(I),其中->表示继承,-->表示实现,(I…
一.HashMap 参考文章: http://yikun.github.io/2015/04/01/Java-HashMap%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E5%8F%8A%E5%AE%9E%E7%8E%B0/ 特别说明:jdk8中对HashMap进行了优化,这里以jdk8为基准说明. 1.1 hashmap 结构 HashMap使用hash算法来实现字典数据结构(dictionary),任何hash算法必然伴随着hash冲突问题,而常用解决的方案有大致…
Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念: (1)Collection.一个独立元素的序列,这些元素都服从一条或多条规则.List必须按照插入的顺序保存元素,而Set不能有重复元素.Queue按照排队规则来确定对象产生的顺序. (2)Map.一组成对的“键值对”对象,允许你使用键来查找值.映射表让我们能够使用一个对象来查找另一个对象,就像“字典”一样.Map是强大的编程工具. Map接口和Collection接口的不同 Map是双列的,Collection是单列的 Ma…
今天我们先讲一下Collection: Collection和Collections的区别: java.util.Collection是一种java集合接口,它提供了对集合对象的基本操作通用接口方法,同时它还有很多具体实现: 注:以上图片只列举常用集合类 java.util.Collections是一个包装类,它包含许多有关集合操作的静态多态方法,此类不能实例化,它就像个工具类,服务与java的Collection.有关Collections的具体方法可参考JDK说明文档(部分也可见),下面我举…
数据类型: C#:String与StringBuilder Java:String与StringBuffer 第一个不习惯是string的第一个字母必须大写了. 第二个不习惯是int得写成Integer了,虽然可以定义int i=0,但是对于泛型等用法必须ArrayList<Integer>. 常用集合类比较: C#  :HashTable         List<T>                                                        …
​下面的内容是对java中的集合类进行的总结,过段时间会分享java的网路编程,多线程等内容,欢迎批评指正. 1.Java中的集合是用来存放对象的,即集合是对象的集合,对象是集合的元素,java API集合类位于java.util包中. 2.常用集合类: Collection接口,List接口, Set接口,Map接口.接口类结合泛型的使用 3.集合和数组的区别在于集合的长度是动态扩充的,数组中可以存放基本数据类型和引用数据类型,集合中只能存放引用数据类型. 4.java中的集合层次关系 接口:…
上篇已经总结了常用集合类的一些基本特征以及他们之间的区别,下面,再对集合类部分进行总结 一.集合类的常用方法 1.remove方法:移除元素操作,下面以ArrayList为例. import java.util.*; public class Demo_JiHeLei2{ //定义测试方法 public void test_1(){ //remove()方法test,一ArrayList为例 List lis = new ArrayList(); lis.add("a"); lis.a…
http://blog.csdn.net/iamzp2008/article/details/38151971?utm_source=tuicool&utm_medium=referral 现在关于Java集合类的文章很多,但是我最近看到一个很有意思图片,基本上把Java集合的总体框架都给展现出来了,很直观. 如果发现图片看不清楚,点此处看大图 在这里,集合类分为了Map和Collection两个大的类别. 处于图片左上角的那一块灰色里面的四个类(Dictionary.HashTable.Vec…
首先常用api(String,StringBuffer/StringBuilder等) 1.集合类,线程类 2.Servlet(很少用纯粹的servlet写,但你要懂,因为很多框架都是基于servlet封装的) 3.json,xml读写 4.数据库访问(CRUD,事务,连接池) 5.http请求(HttpClient) 6其他,包括常用框架,设计模式,面向对象 初级程序员会这些就可以写项目了.后期遇到的问题就会复杂得多,要靠各种经验和知识的积累. 除了要掌握的20%以外还要掌握些什么知识才能游刃…
一.泛型 1.泛型的本质是将类型参数化,即将数据类型作为参数. 2.泛型可以在编译期进行检查,其所有的强制转换是隐式且自动的,提高了代码的安全性. 3.泛型可以用在类(泛型类).接口(泛型接口).方法(泛型方法)的创建. 4.泛型的类型参数只能为引用类型,不能为基本类型. 二.常用集合类 1.体系分类: (1)Collection体系: Set.List.Queue. Set:元素无序且不可重复.HashSet,TreeSet. List:元素有序且可重复.LinkedList,ArrayLis…
API(Application Programming Interface),应用程序编程接口.Java API是JDK中提供给我们使用的类的说明文档.即jdk包里边写好的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可.所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们. 例子 ArrayList<String> list = new ArrayList<String>(); ArrayList就是一个…
为了勾起回忆,我画了一个常用集合类的结构关系图,话不多说,详见下图: 实际开发中ArrayList/HashMap/HashSet是三种最常用的集合工具类,通过其结构关系图也能清晰的了解他们的特性,所以,这里也将他们完整结构关系图贴出来,以便回忆! 1:ArrayList 2:HashMap 3:HashSet…
ACM常用算法及练习 知识类型 重要度 容易度 应掌握度 典型题 其他           数据结构(5) 链表 ★★☆ ★★★ ★★☆     栈 stack ★★★ ★★★ ★★★ HLoj1207 HDoj_1022 队列 queue ★★★ ★★★ ★★★     并查集 ★★★ ★★☆ ★★★ HDoj_1213 HLoj1050 二叉堆和优先队列 ★★☆ ★★★ ★★☆ HDoj_1873   二叉排序树 ★☆☆ ★★☆ ★☆☆     字典树(Trie) ★★☆ ★☆☆ ★☆☆ H…
http://linux.vbird.org/linux_server/0140networkcommand.php     第五章. Linux 常用網路指令 切換解析度為 800x600 最近更新日期:2011/07/18 Linux 的網路功能相當的強悍,一時之間我們也無法完全的介紹所有的網路指令,這個章節主要的目的在介紹一些常見的網路指令而已. 至於每個指令的詳細用途將在後續伺服器架設時,依照指令的相關性來進行說明.當然,在這個章節的主要目的是在於將所有的指令彙整在一起, 比較容易瞭解啦…
C++ STL Container--Stack 栈是一种先进后出(LIFO)的数据结构,限制只能在一端完成插入和删除操作,这一端叫做栈顶(top),另一端即为栈底(bottom).C++ STL(Standrad Template Libarary)中stack容器泛化是使用现成的序列容器来实现的,默认使用双端队列dequeue来实现,也可以使用vector.list等线性结构. 为了严格遵循栈的先进后出原则,stack不提供任何元素的迭代器操作,因此,stack容器不会向外部提供任何可用的前…
3)Java容器   Java的集合框架核心主要有三种:List.Set和Map.这里的 Collection.List.Set和Map都是接口(Interface). List lst = new ArrayList(); 这是我们平常经常使用的创建一个新的List的语句,在这里, List是接口,ArrayList才是具体的类.     常用集合类的继承结构如下:Collection<--List<--VectorCollection<--List<--ArrayListCol…
首先保证这一篇分析查找算法的文章,气质与大部分搜索引擎搜索到的文章不同,主要体现在代码上面,会更加高级,会结合到很多之前研究过的内容,例如设计模式,泛型等.这也与我的上一篇面向程序员编程--精研排序算法不尽相同. 关键字:二分查找树,红黑树,散列表,哈希,索引,泛型,API设计,日志设计,测试设计,重构 查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算. 当今世纪,IT界最重要的词就是"数据!数据!数据!",高效检索这些信息的能力是处理他们的重要前提.数…
在学习集合之前,我们需要思考的是为什么要有集合?集合有什么用? 我们知道,在java中有数组的概念,数组可以用来存放一组数据.但是,数组是固定长度的,这样在使用的时候就会有很多的不方便,比如说资源的浪费.这个时候,我们就希望有一种可以动态改变大小的数组,那就是集合的作用了. 首先我们来看看常用集合类和接口的组织图. 快速访问Collection  List  ArrayList  LinkedList   Set    HashSet TreeSet   集合输出 我们可以知道,Collecti…