List,set,Map 的用法和区别等

List,set,Map 的用法和区别等
List,set,Map 的用法和区别等

├List

│├LinkedList

│├ArrayList

│└Vector

│└Stack

└Set

Map

├Hashtable

├HashMap

└WeakHashMap

Collection接口

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection 的“子接口”如List和Set。

所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个

如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:Iterator it = collection.iterator(); // 获得一个迭代子

while(it.hasNext()) {

Object obj = it.next(); // 得到下一个元素

}

由Collection接口派生的两个接口是List和Set。

List接口

List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。

和下面要提到的Set不同,List允许有相同的元素。

除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。

实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。

LinkedList类

LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。

注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:

List list = Collections.synchronizedList(new LinkedList(...));

ArrayList类

ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。

size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。

每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。

和LinkedList一样,ArrayList也是非同步的(unsynchronized)。

Vector类

Vector非常类似ArrayList,但是Vector是同步的。由Vector 创建的Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。

Stack 类

Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop 方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。

Set接口

Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。

很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。

请注意:必须小心操作可变对象(Mutable Object)。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true

将导致一些问题。

Map接口

请注意,Map没有继承Collection接口,Map提供key到value 的映射。一个Map中不能包含相同的key,每个key只能映射一个value。Map接口提供3种集合的视图,Map的内容可以被当作一组key 集合,一组value集合,或者一组key-value映射。

Hashtable类

Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value。

添加数据使用put(key, value),取出数据使用get(key),这两个基本操作的时间开销为常数。

Hashtable通过initial capacity和load factor两个参数调整性能。通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put 这样的操作。

使用Hashtable的简单示例如下,将1,2,3放到Hashtable中,他们的key分别是”one”,”two”,”three”:

Hashtable numbers = new Hashtable();

numbers.put(“one”, new Integer(1));

numbers.put(“two”, new Integer(2));

numbers.put(“three”, new Integer(3));

要取出一个数,比如2,用相应的key:

Integer n = (Integer)numbers.get(“two”);

System.out.println(“two = ” + n);

由于作为key的对象将通过计算其散列函数来确定与之对应的value的位置,因此任何作为key的对象都必须实现hashCode和equals 方法。hashCode和equals方法继承自根类Object,如果你用自定义的类当作key的话,要相当小心,按照散列函数的定义,如果两个对象相同,即obj1.equals(obj2)=true,则它们的hashCode必须相同,但如果两个对象不同,则它们的hashCode不一定不同,如果两个不同对象的hashCode相同,这种现象称为冲突,冲突会导致操作哈希表的时间开销增大,所以尽量定义好的hashCode()方法,能加快哈希表的操作。

如果相同的对象有不同的hashCode,对哈希表的操作会出现意想不到的结果(期待的get方法返回null),要避免这种问题,只需要牢记一条:要同时复写equals方法和hashCode方法,而不要只写其中一个。

Hashtable是同步的。

HashMap类

HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。,但是将HashMap视为

Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap 的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得过高,或者load factor过低。

WeakHashMap类

WeakHashMap是一种改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收。

总结

如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。

如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。

要特别注意对哈希表的操作,作为key的对象要正确复写equals 和hashCode方法。

尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。

java中Map类

java中Map类 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象。 Map的接口 Map---实现Map Map.Entry--Map的内部类,描述Map中的按键/数值对。 SortedMap---扩展Map,使按键保持升序排列 关于怎么使用,一般是选择Map的子类,而不直接用Map类。 下面以HashMap为例。 public static void main(String args[]) { HashMap hashmap = new HashMap(); hashmap.put("Item0", "Value0"); hashmap.put("Item1", "Value1"); hashmap.put("Item2", "Value2"); hashmap.put("Item3", "Value3"); Set set = hashmap.entrySet(); Iterator iterator = set.iterator(); while (iterator.hasNext() { Map.Entry mapentry = (Map.Entry) iterator.next(); System.out.println(mapentry.getkey() + "/" + mapentry.getValue()); } } 注意,这里Map的按键必须是唯一的,比如说不能有两个按键都为null。 如果用过它,就会知道它的用处了。 又比如: Map map = new HashMap(); map.put("Order", (Order) obj); 资料: Collection容器中包含Set和List接口,Set中又包含HashSet,List中包含LinkedList和ArrayList;单独的Map接口中只有HashMap。 java.util 中的集合类包含Java 中某些最常用的类。最常用的集合类是List 和Map。List 的具体实现包括ArrayList 和Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List 适用于按数值索引访问元素的情形,其中的数据有顺序且可以重复。而Set中数据无顺序且不可以重复。

螺纹通止规

螺纹通止规 定是:螺纹止规进入螺纹不能超过2.5圈,一般的要实际不得超过2圈,并且用得力度不能大,我们的经验是用拇指和食指轻轻夹持螺纹规以刚好能转动螺纹规的力度为准.力大了就相当于在使用丝锥或牙板了,那样规就用不了几次了. 螺纹通止规 螺纹通止规是适用于标准规定型号的灯头作为灯用附件电光源产品时候的设计和生产、检验的工具设备。 用途 一般用于检验螺纹灯头或灯座的尺寸是否符合标准要求,分别检验螺纹灯头的通规和止规尺寸或灯座的通规或止规尺寸。 工作原理 具体检验要求及介绍详见中国人民国国家标准:GB/T1483.1-2008或 IEC60061-3:2004标准规定容。 操作方法 具体检验要求及介绍详见中国人民国国家标准:GB/T1483.1-2008或 IEC60061-3:2004标准规定容。 通止规

通止规,是量规的一种。作为度量标准,用于大批量的检验产品。 通止规是量具的一种,在实际生产批量的产品若采取用计量量具(如游标卡尺,千分表等有刻度的量具)逐个测量很费事.我们知道合格的产品是有一个度量围的.在这个围的都合格,所以人们便采取通规和止规来测量. 通止规种类 (一)对统一英制螺纹,外螺纹有三种螺纹等级:1A、2A和3A级,螺纹有三种等级:1B、2B和3B级,全部都是间隙配合。等级数字越高,配合越紧。在英制螺纹中,偏差仅规定1A和2A级,3A级的偏差为零,而且1A和2A级的等级偏差是相等的等级数目越大公差越小,如图所示:1B 2B 3B 螺纹基本中径3A 外螺纹2A 1A 1、1A和1B级,非常松的公差等级,其适用于外螺纹的允差配合。 2、2A和2B级,是英制系列机械紧固件规定最通用的螺纹公差等级。 3、3A和3B级,旋合形成最紧的配合,适用于公差紧的紧固件,用于安全性的关键设计。 4、对外螺纹来说,1A和2A级有一个配合公差,3A级没有。1A级公差比2A级公差大50,比3A级大75,对螺纹来说,2B级公差比2A公差大30。1B级比2B级大50,比3B级大75。 (二)公制螺纹,外螺纹有三种螺纹等级:4h、6h和6g,螺纹有三种螺纹等级:5H、6 H、7H。(日标螺纹精度等级分为I、II、III三级,通常状况下为II级)在公制螺纹中,H 和h的基本偏差为零。G的基本偏差为正值,e、f和g的基本偏差为负值。如图所示:公差G H 螺纹偏差基本中径外螺纹f g h e 1、H是螺纹常用的公差带位置,一般不用作表面镀层,或用极薄的磷化层。G位置基本偏差用于特殊场合,如较厚的镀层,一般很少用。 2、g常用来镀6-9um的薄镀层,如产品图纸要6h的螺栓,其镀前螺纹采用6g的公差带。 3、螺纹配合最好组合成H/g、H/h或G/h,对于螺栓、螺母等精制紧固件螺纹,标准推荐采用6H/6g的配合。 (三)螺纹标记M10×1–5g 6g M10×1–6H 顶径公差代号中径和顶径公差代号(相同)中径公差代号。 通止规是两个量具分为通规和止规.举个例子:M6-7h的螺纹通止规一头为通规(T)如果能顺利旋进被测螺纹孔则为合格,反之不合格需返工(也就是孔小了).然后用止规(Z)如果能顺利旋进被测螺纹孔2.5圈或以上则为不合格反之合格.且此时不合格的螺纹孔应报废,不能进行返工了.其中2.5圈为国家标准,若是出口件最多只能进1.5圈(国际标准).总之通规过止规不过为合格,通规止规都不过或通规止规都过则为不合格。

MFC中List Control控件的使用及实时显示系统时间的方法 .

MFC中List Control控件的使用及实时显示系统时间的方 法 . (一)List Control控件的使用 新近开发了一个摄像机标定的MFC程序,标定完成后期望将求得的摄像机参数直观地显示到应用程序的界面上来。起初的方案是为每一个参数都建立一个Edit控件,并对每一个控件设定一个控制变量,将该变量与相应参数对应起来。这样做是可行的,但当参数众多时比较繁琐。鉴于此,决定在程序中使用List Control控件,将参数以List的形式呈现在界面上。以下是我在基于对话框的MFC程序中添加List Control控件的步骤。 1.新加ListControl 控件,属性中的style属性页下的View选择Report。并设置其对应的控制变量如:m_ListCtrl。 2.初始化,即设置列。 m_ListCtrl.InsertColumn(0,"参数名"); //插入列 m_ListCtrl.InsertColumn(1,"参数值"); m_ListCtrl.InsertColumn(2,"备注"); CRect rect3; m_ListCtrl.GetClientRect(rect3); //获得当前客户区信息m_ListCtrl.SetColumnWidth(0,rect3.Width()/4); //设置

列的宽度。 m_ListCtrl.SetColumnWidth(1,rect3.Width()*2/4); m_ListCtrl.SetColumnWidth(2,rect3.Width()/4); 这部分初始化操作,最好放在对话框类的OnInitDialog()函数里,自动初始化。 3.插入数据 m_ListCtrl.InsertItem(0,"参数1"); //插入第一个数据,即第0条数据。先插入,然后在修改其他的信息。 m_ListCtrl.SetItemText(0,1,"参数1值"); //修改第0条数据的其他信息。 m_ListCtrl.SetItemText(0,2,"无"); SetItemText()函数负责向列表里添加字符串。当需要添加的是非字符串的数据类型时,需要先转换为字符串类型再用SetItemText()完成添加。假设所需要添加的是double 类型的浮点数。 double dbl=1.2345678; char str[16]={0}; sprintf(str, "%lf", dbl); m_ListCtrl.InsertItem(0,"参数1"); m_ListCtrl.SetItemText(0,1,str); //等价于 m_ListCtrl.SetItemText(0,1,“1.2345678”); 需要注意的是用sprintf族函数时,char数组一定要足

集合里Map,Set,List的区别

Java中的Set,List,Map的区别 (转) 对JAVA的集合的理解是相对于数组 相对于数组的是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型) JAVA集合可以存储和操作数目不固定的一组数据。 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型. JAVA集合主要分为三种类型: Set(集) List(列表) Map(映射) Collection 接口 Collection是最基本的集合接口,声明了适用于JAVA集合(只包括Set和List)的通用方法。 Set 和List 都继承了Conllection,Map没有 Collection接口的方法: boolean add(Object o) :向集合中加入一个对象的引用 void clear() :删除集合中所有的对象,即不再持有这些对象的引用 boolean isEmpty() :判断集合是否为空 boolean contains(Object o): 判断集合中是否持有特定对象的引用 Iterartor iterator() : 返回一个Iterator对象,可以用来遍历集合中的元素 boolean remove(Object o):从集合中删除一个对象的引用 int size() :返回集合中元素的数目 Object[] toArray() :返回一个数组,该数组中包括集合中的所有元素 关于:Iterator() 和toArray() 方法都用于集合的所有的元素,前者返回一个Iterator对象,后者返回一个包含集合中所有元素的数组。 Iterator接口声明了如下方法: hasNext(): 判断集合中元素是否遍历完毕,如果没有,就返回true next() :返回下一个元素 remove():从集合中删除上一个有next()方法返回的元素。 Set(集合): Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。 Set接口主要实现了两个实现类: HashSet : HashSet类按照哈希算法来存取集合中的对象,存取速度比较快

螺纹通止规要求螺纹通规通

螺纹通止规要求螺纹通规通,止规止。 但是如果螺纹通规止,说明什么? 螺纹止规通,又说明什么? 我也来说两句查看全部回复 最新回复 ?wpc (2008-11-07 20:11:20) 在牙型正确的前提下螺纹通止规检测螺纹中径 ?lobont (2008-11-08 11:16:32) 对外螺纹而言,螺纹通规是做到中径上偏差,所以能通过就表示产品合格,通不过就表示螺纹做大了,要再修一刀; 螺纹止规做到中径下偏差,所以只能通过2~3牙,如果也通过,就表示外螺纹做小了,产品成为废品 ?qubin8512 (2008-11-18 15:36:05) 螺纹赛规与螺纹环规主要测量螺纹的中径。 ?datafield (2008-11-29 19:12:51) 检具不是万能的,只是方便而已。具体没什么的我有在哪本书上看过,是一本螺纹手册上的。 ?ZYC007 (2009-2-09 20:31:13) 在牙型正确的前提下螺纹通止规检测螺纹中径。 对外螺纹而言,但是如果螺纹通规止,说明螺纹中径大;螺纹止规通,又说明螺纹中径小。 ?WWCCJJ (2009-3-19 09:27:19) 检测的是螺纹的中径,螺纹检测规在检定时,也是检测其中径. ?tanjiren (2009-3-20 22:23:06) 螺纹通止规只能检测螺纹的作用中径,大径和底径等均无法准确测量出来. ?月夜(2009-4-01 21:47:13) 用来测量中径 ?丽萍(2009-4-02 10:11:41)

只能检测工件螺纹的中径 yg196733456 (2009-4-03 09:15:56)原来是测中径的知道了

Control-M简明操作手册

Control-M简明操作手册 本手册仅列出一些重要的操作方法,因时间关系,次要的不在此列出,请参考Control-M用户手册。 1.调度的启停 1.1Control-M/EM启停 用ctem用户登录EM服务器,键入root_menu命令,看到以下菜单: 选择其中的“1 - Activation Menu”,进入子菜单:

即可根据情况启动或停止相应的服务。同时,这个菜单下还可进行EM各服务运行的检查。 1.2Control-M/Server启停 用ctm用户登录Control-M/Server服务器,键入ctm_menu命令,看到以下菜单:

选择其中的“1 - CONTROL-M Manager”,进入子菜单: 根据情况启动或停止相应的服务。同时,这个菜单下还可进行Server运行的检查。1.3Control-M/Agent启停 启动Control-M/Agent:用root用户登录Agent节点,进入Agent安装目录下的ctm/scripts

子目录(如果Server和Agent安装在同一节点上则进入ctm_agent/ctm/scripts目录,下同),并执行start-ag –u ctm。使用root用户启停Agent的原因是只有root才能调用任何一个用户的任何命令。 停止Control-M/Agent:用root用户登录Agent节点,进入Agent安装目录下的ctm/scripts 子目录,并执行shut-ag –u ctm。 2.参数配置 Control-M/EM的参数已在安装过程中设置完毕。 2.1Control-M/Server参数设置 用ctm用户登录Control-M/Server服务器,键入ctm_menu命令,可见以下菜单: 1)选择主菜单中的“6 –Parameter Customization”可查看或设置包括各通讯端口在内的重要参数:

java_Set,List,Map,Vector,ArrayList的区别

JAVA的容器---List,Map,Set Collection ├List │├LinkedList │├ArrayList │└Vector │└Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。 所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。 如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下: Iterator it = collection.iterator(); // 获得一个迭代子 while(it.hasNext()) { Object obj = it.next(); // 得到下一个元素 } 由Collection接口派生的两个接口是List和Set。

NPT螺纹以及检测方法详解

N P T螺纹以及检测方法详 解 Prepared on 22 November 2020

一、目的:规范公司技术员,检验员,操作员对NPT螺纹的了解。 二、适用范围:适用于公司任何NPT螺纹类产品,参考资料为通用管螺 纹和国家标准GB/T12716-2011。 三、目录 1、NPT和NPTF介绍 2、螺纹技术参数参数讲解 3、NPT与NPTF加工工艺 4、NPT和NPTF的检测方法 四、内容: NPT和NPTF螺纹介绍 NPT 是 National (American) Pipe Thread 的缩写,属於美国标准的 60 度锥管 密封螺纹,用於北美地区,美国标准为13)通用管螺纹.国家标准可查阅 GB/T12716-2011。NPTF:美制干密封圆锥管螺。NPTF = National Pipe Thread Fine 称之为一般用途的锥管螺纹,这也是我们以前称之为的布氏锥螺纹。NPTF 螺纹称之为干密封式锥管螺纹,它连接密封的原理是在没有润滑剂或密封填 料情况下完全依靠螺纹自身形成密封,设计意图是使内、外螺纹牙的侧面、 牙顶和牙底同时接触,来达到密封的目的。它们两者的牙型角、斜度等指标 都是相同的,关键是牙顶和牙底的削平高度不一样,所以,量规的设计也是 不一样的。NPTF干密封管螺纹的牙形精度比NPT螺纹高,旋合时不用任何 填料,完全依靠螺纹自身形成密封,螺纹间无任何密封介质。干密封管螺纹 规定有较为严格的公差,属精密型螺纹,仅用在特殊场合。这种螺纹有较高 的强度和良好的密封性,在具有薄截面的脆硬材料上采用此螺纹可以减少断 裂现象。NPTF内、外螺纹牙顶与牙底间没有间隙,是过盈配合,而NPT螺 纹是过渡配合。NPTF螺纹主要用于高温高压对密封要求严格的场所。NPT

VC MFC List Control控件的使用

基于对话框的MFC程序中添加List Control控件的步骤。 1.新加ListControl 控件,属性中的style属性页下的View选择Report。并设置其对应的控制变量如:m_ListCtrl。 2.初始化,即设置列。 m_ListCtrl.InsertColumn(0,"参数名"); //插入列 m_ListCtrl.InsertColumn(1,"参数值"); m_ListCtrl.InsertColumn(2,"备注"); CRect rect3; m_ListCtrl.GetClientRect(rect3); //获得当前客户区信息 m_ListCtrl.SetColumnWidth(0,rect3.Width()/4); //设置列的宽度。 m_ListCtrl.SetColumnWidth(1,rect3.Width()*2/4); m_ListCtrl.SetColumnWidth(2,rect3.Width()/4); 这部分初始化操作,最好放在对话框类的OnInitDialog()函数里,自动初始化。 3.插入数据 m_ListCtrl.InsertItem(0,"参数1"); //插入第一个数据,即第0条数据。先插入,然后在修改其他的信息。 m_ListCtrl.SetItemText(0,1,"参数1值"); //修改第0条数据的其他信息。 m_ListCtrl.SetItemText(0,2,"无"); SetItemText()函数负责向列表里添加字符串。当需要添加的是非字符串的数据类型时,需要先转换为字符串类型再用SetItemText()完成添加。假设所需要添加的是double类型的浮点数。 double dbl=1.2345678; char str[16]={0}; sprintf(str, "%lf", dbl); m_ListCtrl.InsertItem(0,"参数1"); m_ListCtrl.SetItemText(0,1,str); //等价于 m_ListCtrl.SetItemText(0,1,“1.2345678”); 需要注意的是用sprintf族函数时,char数组一定要足够大,否则程序运行时会出现错误提示“ Stack around the variable 'str' was corrupted ”,解决方法是把数组改大一些。 4.删除所有数据。

java中List的用法

java中List的用法和实例详解 List的用法 List包括List接口以及List接口的所有实现类。因为List接口实现了Collection接口,所以List接口拥有Collection接口提供的所有常用方法,又因为List是列表类型,所以List接口还提供了一些适合于自身的常用方法,如表1所示。 表1 List接口定义的常用方法及功能 从表1可以看出,List接口提供的适合于自身的常用方法均与索引有关,这是因为List集合为列表类型,以线性方式存储对象,可以通过对象的索引操作对象。 List接口的常用实现类有ArrayList和LinkedList,在使用List集合时,通常情况下声明为List类型,实例化时根据实际情况的需要,实例化为ArrayList或LinkedList,例如: List l = new ArrayList();// 利用ArrayList类实例化List集合 List l2 = new LinkedList();// 利用LinkedList类实例化List集合 1.add(int index, Object obj)方法和set(int index, Object obj)方法的区别 在使用List集合时需要注意区分add(int index, Object obj)方法和 set(int index, Object obj)方法,前者是向指定索引位置添加对象,而后者是修改指定索引位置的对象,例如执行下面的代码: src\com\mwq\TestCollection.java关键代码: public static void main(String[] args) { String a = "A", b = "B", c = "C", d = "D", e = "E"; List list = new LinkedList(); list.add(a);

通止规的用法及管理

通止规的用法及管理 1、止规 使用前:应经相关检验计量机构检验计量合格后,方可投入生产现场使用。 使用时:应注意被测螺纹公差等级及偏差代号与环规标识公差等级、偏差代号相同(如M24*1.5-6h与M24*1.5-5g两种环规外形相同,其螺纹公差带不相同,错用后将产生批量不合格品)。 检验测量过程:首先要清理干净被测螺纹油污及杂质,然后在环规与被测螺纹对正后,用大母指与食指转动环规,旋入螺纹长度在2个螺距之内为合格,否则判为不合格品。 2、通规 使用前:应经相关检验计量机构检验计量合格后,方可投入生产现场使用。 使用时:应注意被测螺纹公差等级及偏差代号与环规标识的公差等级、偏差代号相同(如M24*1.5-6h与M24*1.5-5g两种环规外形相同,其螺纹公差带不相同,错用后将产生批量不合格品)。 检验测量过程:首先要清理干净被测螺纹塞规油污及杂质,然后在环规与被测螺纹对正后,用大母指与食指转动环规,使其在自由状态下旋合通过螺纹全部长度判定合格,否则以不通判定。 3、注意事项 在用量具应在每个工作日用校对塞规计量一次。经校对塞规计量超差或者达到计量器具周检期限的环规,由计量管理人员收回、标识隔离并作相应的处理措施。 可调节螺纹环规经调整后,测量部位会产生失圆,此现象由计量修复人员经螺纹磨削加工后再次计量鉴定,各尺寸合格后方可投入使用。 报废环规应标识隔离并及时处理,不得流入生产现场。 4、维护与保养 量具(环规)使用完毕后,应及时清理干净测量部位附着物,存放在规定的量具盒内。生产现场在用量具应摆放在工艺定置位置,轻拿轻放,以防止磕碰而损坏测量表面。 严禁将量具作为切削工具强制旋入螺纹,避免造成早期磨损。可调节螺纹环规严禁非计量工作人员随意调整,确保量具的准确性。环规长时间不用,应交计量管理部门妥善保管。

List+Control中的数据写入Excel表格----+数据库操作法

将List Control中的数据写入Excel表格---- 数据库操作法 CDatabase database; CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动CString sExcelFile,sPath; CString sSql; //获取主程序所在路径,存在sPath中 GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH); sPath.ReleaseBuffer (); int nPos; nPos=sPath.ReverseFind ('\\'); sPath=sPath.Left (nPos + 1); CString sFileName; CFileDialog fDlg(TRUE, "xls", sPath + "aaaa.xls", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "xls File (*.xls)|*.xls|"); if(fDlg.DoModal()==IDOK) { sFileName = fDlg.GetPathName(); } else return; sExcelFile = sFileName; // 要建立的Excel文件 try { // 创建进行存取的字符串 sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\ ";DBQ=%s",sDriver, sExcelFile, sExcelFile); // 创建数据库(既Excel表格文件) if( database.OpenEx(sSql,CDatabase::noOdbcDialog) ) { // 创建表结构(姓名、年龄) //sSql = "CREATE TABLE Exceldemo (Name TEXT,Age NUMBER)"; sSql = "create table Report (ID AUTOINCREMENT, 省份char(50), 开始时间date," "结束时间date, 宽带用户数Integer, 本周用户数Integer, 本周增长数Integer, 本周注销数Integer, " "本周净增数Integer, 用户渗透率real,收费用户数Integer, 营销增长用户Integer, 营销注销用户Integer," "市场动作char(255),产品情况TEXT)";

VC++中listlist的使用方法总结

以下是引自msdn帮助文档(中文是我自己翻译的,错误之处请包涵。): The template class describes an object that controls a varying-length sequence of elements of type T. The sequence is stored as a bidirectional linked list of elements, each containing a member of type T. 本模板类描述了一个对象,这个对象是类型为T的可变长度的序列元素。这个序列采用双向链表的方式存储每一个元素,其中每一个元素的数据流行都是T。 The object allocates and frees storage for the sequence it controls through a protected object named allocator, of class A. Such an allocator object must have the same external interface as an object of template class allocator. Note that allocator is not copied when the object is assigned. 对序列对象的分配和释放操作通过一个受保护的对象allocator进行。这样一个allocator对象必须有相同的外部接口作为一个模板类分配器的对象。注意:当对象被分配之后allocator不能被复制。 List reallocation occurs when a member function must insert or erase elements of the controlled sequence. In all such cases, only iterators or references that point at erased portions of the controlled sequence become invalid. 当一个成员要进行insert或者erase操作时,列表的重新分配操作发生。在这种情况下,只有迭代器或者引用所指向的要删除的对象的指针变为无效。 msdn帮助文档自带的例子 下面为msdn帮助文档中自带的一个例子,该例展示了如何使用迭代器读取列表中的元素和进行插入操作。 #include #include using namespace std ; typedef list LISTINT; void main() { int rgTest1[] = {5,6,7}; int rgTest2[] = {10,11,12}; LISTINT listInt; LISTINT listAnother; LISTINT::iterator i; // Insert one at a time listInt.insert (listInt.begin(), 2); listInt.insert (listInt.begin(), 1); listInt.insert (listInt.end(), 3); // 1 2 3 for (i = listInt.begin(); i != listInt.end(); ++i) cout << *i << ""; cout << endl; // Insert 3 fours listInt.insert (listInt.end(), 3, 4); // 1 2 3 4 4 4 for (i = listInt.begin(); i != listInt.end(); ++i) cout << *i << "";

Java Map集合

java.util 中的集合类包含Java 中某些最常用的类。最常用的集合类是List 和Map。List 的具体实现包括ArrayList 和V ector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List 适用于按数值索引访问元素的情形。 Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。从概念上而言,您可以将List 看作是具有数值键的Map。而实际上,除了List 和Map 都在定义java.util 中外,两者并没有直接的联系。本文将着重介绍核心Java 发行套件中附带的Map,同时还将介绍如何采用或实现更适用于您应用程序特定数据的专用Map。 了解Map 接口和方法 Java 核心类中有很多预定义的Map 类。在介绍具体实现之前,我们先介绍一下Map 接口本身,以便了解所有实现的共同点。Map 接口定义了四种类型的方法,每个Map 都包含这些方法。下面,我们从两个普通的方法(表1)开始对这些方法加以介绍。 表1:覆盖的方法。我们将这Object 的这两个方法覆盖,以正确比较Map 对象的等价性。 Map 构建 Map 定义了几个用于插入和删除元素的变换方法(表2)。 表2:Map 更新方法:可以更改Map 内容。 尽管您可能注意到,纵然假设忽略构建一个需要传递给putAll() 的Map 的开销,使用putAll() 通常也并不比使用大量的put() 调用更有效率,但putAll() 的存在一点也不稀奇。这是因为,putAll() 除了迭代put() 所执行的将每个键值对添加到Map 的算法以外,还需要迭代所传递的Map 的元素。但应注意,putAll() 在添加所有元素之前可以正确调整Map 的大小,因此如果您未亲自调整Map 的大小(我们将对此进行简单介绍),则putAll() 可能比预期的更有效。 查看Map 迭代Map 中的元素不存在直接了当的方法。如果要查询某个Map 以了解其哪些元素满足特定查询,或如果要迭代其所有元素(无论原因如何),则您首先需要获取该Map 的“视图”。有三种可能的视图(参见表3) 所有键值对—参见entrySet() 所有键—参见keySet() 所有值—参见values() 前两个视图均返回Set 对象,第三个视图返回Collection 对象。就这两种情况而言,问题到这里并没有结束,这是因为您无法直接迭代Collection 对象或Set 对象。要进行迭代,

通止规的用法及管理

通止规的用法及管理 令狐采学 1、止规 使用前:应经相关检验计量机构检验计量合格后,方可投入生产现场使用。 使用时:应注意被测螺纹公差等级及偏差代号与环规标识公差等级、偏差代号相同(如M24*1.56h与M24*1.55g两种环规外形相同,其螺纹公差带不相同,错用后将产生批量不合格品)。 检验测量过程:首先要清理干净被测螺纹油污及杂质,然后在环规与被测螺纹对正后,用大母指与食指转动环规,旋入螺纹长度在2个螺距之内为合格,否则判为不合格品。 2、通规 使用前:应经相关检验计量机构检验计量合格后,方可投入生

产现场使用。 使用时:应注意被测螺纹公差等级及偏差代号与环规标识的公差等级、偏差代号相同(如M24*1.56h与M24*1.55g两种环规外形相同,其螺纹公差带不相同,错用后将产生批量不合格品)。 检验测量过程:首先要清理干净被测螺纹塞规油污及杂质,然后在环规与被测螺纹对正后,用大母指与食指转动环规,使其在自由状态下旋合通过螺纹全部长度判定合格,否则以不通判定。 3、注意事项 在用量具应在每个工作日用校对塞规计量一次。经校对塞规计量超差或者达到计量器具周检期限的环规,由计量管理人员收回、标识隔离并作相应的处理措施。 可调节螺纹环规经调整后,测量部位会产生失圆,此现象由计量修复人员经螺纹磨削加工后再次计量鉴定,各尺寸合格后方

可投入使用。 报废环规应标识隔离并及时处理,不得流入生产现场。 4、维护与保养 量具(环规)使用完毕后,应及时清理干净测量部位附着物,存放在规定的量具盒内。生产现场在用量具应摆放在工艺定置位置,轻拿轻放,以防止磕碰而损坏测量表面。 严禁将量具作为切削工具强制旋入螺纹,避免造成早期磨损。可调节螺纹环规严禁非计量工作人员随意调整,确保量具的准确性。环规长时间不用,应交计量管理部门妥善保管。

VC++中listcontrol的用法

CListCtrl 使用技巧 以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SDK:以“ListView_”开头的一些宏。如ListView_InsertColumn 1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标 LVS_LIST: 显示一列带有小图标的item LVS_REPORT: 显示item详细资料 直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料 2. 设置listctrl 风格及扩展风格 LONG lStyle; lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE);//获取当前窗口style lStyle &= ~LVS_TYPEMASK; //清除显示方式位 lStyle |= LVS_REPORT; //设置style SetWindowLong(m_list.m_hWnd, GWL_STYLE, lStyle);//设置style DWORD dwStyle = m_list.GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl) dwStyle |= LVS_EX_CHECKBOXES;//item前生成checkbox控件 m_list.SetExtendedStyle(dwStyle); //设置扩展风格 注:listview的style请查阅msdn https://www.360docs.net/doc/f06025764.html,/library/default.asp?url=/library/en-us/wceshellui5/html/wce50lrflistviewstyles. asp

java中HashMap详解

java中HashMap详解 HashMap 和HashSet 是Java Collection Framework 的两个重要成员,其中HashMap 是Map 接口的常用实现类,HashSet 是Set 接口的常用实现类。虽然HashMap 和HashSet 实现的接口规范不同,但它们底层的Hash 存储机制完全一样,甚至HashSet 本身就采用HashMap 来实现的。 通过HashMap、HashSet 的源代码分析其Hash 存储机制 实际上,HashSet 和HashMap 之间有很多相似之处,对于HashSet 而言,系统采用Hash 算法决定集合元素的存储位置,这样可以保证能快速存、取集合元素;对于HashMap 而言,系统key-value 当成一个整体进行处理,系统总是根据Hash 算法来计算key-value 的存储位置,这样可以保证能快速存、取Map 的key-value 对。 在介绍集合存储之前需要指出一点:虽然集合号称存储的是Java 对象,但实际上并不会真正将Java 对象放入Set 集合中,只是在Set 集合中保留这些对象的引用而言。也就是说:Java 集合实际上是多个引用变量所组成的集合,这些引用变量指向实际的Java 对象。 集合和引用 就像引用类型的数组一样,当我们把Java 对象放入数组之时,并不是真正的把Java 对象放入数组中,只是把对象的引用放入数组中,每个数组元素都是一个引用变量。

HashMap 的存储实现 当程序试图将多个key-value 放入HashMap 中时,以如下代码片段为例: Java代码 1. HashMap map = new HashMap(); 2. map.put("语文" , 80.0); 3. map.put("数学" , 89.0); 4. map.put("英语" , 78.2); HashMap 采用一种所谓的“Hash 算法”来决定每个元素的存储位置。 当程序执行map.put("语文" , 80.0); 时,系统将调用"语文"的hashCode() 方法得到其hashCode 值——每个Java 对象都有hashCode() 方法,都可通过该方法获得它的hashCode 值。得到这个对象的hashCode 值之后,系统会根据该hashCode 值来决定该元素的存储位置。 我们可以看HashMap 类的put(K key , V value) 方法的源代码: Java代码 public V put(K key, V value) { // 如果key 为null,调用putForNullKey 方法进行处理

uicontrol的使用

Uicontrol:是user interface control 的缩写(用户界面控制)。 MATLAB的uicontrol包括按钮、滑标、文本框及弹出式菜单。Uicontrol由函数uicontrol 生成。 >>Hc_1=uicontrol(Hf_fig,' PropertyName ' ,PropertyValue,...) 其中,Hc_1是由函数uicontrol生成uicontrol对象的句柄。 下面将给出uicontrol 对象的一些属性及它们相应的值和描述,{}内的内容为默认值,如{default},除非另外声明,否则所有的属性都可以进行设置,所有对象都通用的属性将在附件中列出。 ‘BakcgroundColor'(背景颜色)---ColorSpec(特定的颜色).这个属性声明了用来填充uicontrol 对象的背景颜色,ColorSpec是一个三元素的RGB 向量或者标准颜色的字符串号,默认的颜色值是和系统相关的,并且可以通过输入命令get(0,'DefaultUuicontrolBackgroundColor')获得。 ‘Callback'(返回,回调)----string(字符串)。这个属性声明了当用户触发uicontrol对象(如:在按下一个'pushbutton'或者拖动一个'slider')时候所执行的字符串,'frame' 和静态的'text'uicontrol类型不发出回调。 ‘CData'--m-by-n-by-3 array( 矩阵)这个属性是一个在'pushbutton'或'fogglebutton'uicontrol 类型上显示的真彩色图像。 ‘Enable'---{‘on'}(默认状态)|‘inactive'(静态)|'off'(关)这个属性声明了是否启用这个uicontrol 对象,当设置为'on'的时候,在这个uicontrol被选中的时候,执行这个回调字符串,当设置为'off'的时候,这个uicontrol标签字符串就变暗。当设置为'inactive' 的时候,uicontrol 没有被变暗,当设置为'off'和'inactive'的时候,不执行这个回调字符串,但是'ButtonDownFcn'属性还是会起作用。

Java中集合类用法总结

帮助 | 留言交? | 登录 首页我的图书馆主题阅读精彩目录精品文苑Tags 会员浏览好书推荐 以文找文 如何对文章标记,添加批注? Java 中集合?用法总结(转载) wade0564 收录于2010-07-08 阅读数:查看 收藏数:7 公众公开 原文来源 tags : java 集合类 欢迎浏览 wade0564 个人图书馆中收藏的文章,想收藏这篇好文章吗,赶快 吧,1分钟拥有自己的个人图书馆! 我也要收藏 举报 Java 中集合?用法总结 收藏 Collection ├List │├LinkedList │├ArrayList (异步,线程不安全,空间用完时自动增长原容量一半)│└Vector (同 步,线程安全,空间用完时自动增长原容量一倍)│ └Stack └Set ├HashSet └TreeSet Map ├Hashtable ├HashMap ├WeakHashMap └TreeMap Map 接口: | + -- WeakHashMap: 以弱键 实现的基于哈希表的 Map 。在 WeakHashMap 中,当某个键不再正常使用时,将自动移除其条 | 目。更精确地说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的丢弃,这就使该键成为 可终止的,被终 | 止,然后被回收。丢弃某个键时, 其条目从映射中有效地移除,因此,该类的行为与其他的 Map 实现有所不同。此实现 | 不是同步的。 | + -- TreeMap:该映射根据其键的自然顺序进行 排序,或?根据创建映射时提供的 Comparator 进行 排序,具体取决于使用的 | 构造方法。此实现不是同步的。 | + -- HashMap:基于哈希表的 Map 接?的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了 | 非同步和允许 使用 null 之外,HashMap 类与 Hashtable ?致相同。)此类不保证映射的顺序,特别是它不保证该顺 | 序恒久不变。此实现不是同步的。 | +-- SortedMap: 进一步提供关于键的总体排序 的 Map 。该映射是根据其键的自然顺序进 行排序的,或?根据通常在创建有 序映射时提供的 Comparator 进行排序。对有序映射的 collection 视图(由 entrySet 、keySet 和 values 方法返回 )进行迭代时,此顺序就会反映 出来。要采用此排序方式,还需要提供一些其他操作(此接?是 SortedSet 的对应映 射)。 Collection 接口: | 热点推荐 中国经典汤品——广东汤常用多音字汇总 如果你失恋。。。这些话...影响世界的100个管理定律汽车发动机?作过程和原理分析温家宝总理答中外记?问女人味,有多少男人可以读懂?珍稀的白头叶猴(组图)三鹿门事件之——中国,...国家公务员职务与级别当代古筝四美 付娜《渔...生活?秘方 真的很实用...哲理?品:守护梦想聚会时可以玩的?游戏依赖型人格障碍的表现和治疗经典妙语,十分精彩江边施救[贴图]李一男2003年在港湾...电脑速度慢的解决方法 ...重装系统后必须做的10件?事

相关文档
最新文档