文档库 最新最全的文档下载
当前位置:文档库 › Lab Equipment List未修改完

Lab Equipment List未修改完

Lab Equipment List未修改完
Lab Equipment List未修改完

Weifang Tianfu chemistry science and technology limited company

Lab Equipments List

集合里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类按照哈希算法来存取集合中的对象,存取速度比较快

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);

Java中的集合类

Java中的集合类 (Collection framework)我们在前面学习过java数组,java数组的程度是固定的,在同一个数组中只能存放相同的类型数据。数组可以存放基本类型的数据,也可以存入对象引用的数据。 在创建数组时,必须明确指定数组的长度,数组一旦创建,其长度就不能改变,在许多应用的场合,一组数据的数目不是固定的,比如一个单位的员工数目是变化的,有老的员工跳槽,也有新的员工进来。 为了使程序方便地存储和操纵数目不固定的一组数据,JDK中提供了java集合类,所有java集合类都位于java.util包中,与java数组不同,java集合类不能存放基本数据类型数据,而只能存放对象的引用。 Java集合类分为三种 Set(集合):集合中对象不按特定的方式排序。并且没有重复对象,但它有些实现类中的对象按特定方式排序。--无序,不能重复 List(列表):集合中的对象按照检索位置排序,可以有重复对象,允许按照对象在集中的索引位置检索对象,List和数组有些相似。--有序,可以重复 Map(映射):集合中的每一个元素包含一对键对象和值对象,集合中没有重复的键对象,值对象可以重复,它的有些实现类能对集合中的键对象进行排序。 Java的主要集合类的框架图 Collection和Iterator接口 在Collection接口中声明了适用于java集合(只包括Set和List)通用方法。 Collection接口的方法 方法描述

boolean add(Object o) 向集合中加入一个对象的引用 void clear( ) 删除集合中所有对象,即不再对持有对象的引用boolean contains(Object o) 判断在集合中是否含有特定对象的引用 boolean isEmpty() 判断集合是否为空 Iterator iterator( ) 返回一个Iterator对象,可用它来遍历集合中的元素boolean remove(Object o) 从集合中删除一个对象的引用 int size( ) 返回集合中元素的数目 Object [ ] toArray() 返回一个数组,该数组包含集合中的所有元素 Set接口和List即可都继承了Collection接口,而Map接口没有继承Collection接口,因此可以对Set对象和List对象调用以上方法,但是不能对Map对象调用以上方法。Collection接口的iterator()和toArray()方法多用于获得集合中的所有元素,前者返回一个Iterator对象,后者返回一个包含集合中所有元素的数组。 Iterator隐藏底层集合的数据结构,向客户程序提供了遍历各种类型的集合的统一接口。Iterator接口中声明了如下方法: ●hasNext():判断集合中的元素是否遍历完毕,如果没有,就返回true。 ●next():返回下一个元素 ●remove():从集合中删除上一个由next()方法返回的元素。 注意:如果集合中的元素没有排序,Iterator遍历集合中元素的顺序是任意的,并不一定与像集合中加入的元素的顺序一致。 Set(集) Set是最简单的一种集合,集合中的对象不按特定方式排序,并没有重复对象。Set接口主要有两个实现类:HashSet类还有一个子类LinkedHashSet类,它不仅实现了哈希算法,而且实现了链表数据结构,链表数据结构能提高插入核算出元素的性能。TreeSet类实现了SortedSet接口中,具有排序功能。 List(列表) List的主要特征使其元素已先行方式存储,集合中允许存放重复对象。List接口主要的实现类包括: ●ArrayList—ArrayList代表长度可变的数组。允许对元素进行快速的随机访问,但是向 ArrayList中插入与删除元素的速度较慢。 ●LinkedList—在实现中采用链表数据结构。对顺序访问进行了优化,向List中插入和 删除元素的速度较快,随机访问速度则相对较慢,随机访问是指检索位于特定索引位置元素。 Map(映射) Map(映射)是一种吧键对和值对象进行映射的集合。它的每一个元素都包含一对键对象和值对象,而之对象仍可以是Map类型。以此类推,这样就形成了多级映射。向Map集合中加入元素时,必须提供一对键对象和值对象,从Map集合上检索元素只要给出键对象,就会返回值对象。 实例1 CollectionAll.java

List 基本用法总结

C#泛型列表List基本用法总结 朱先忠 示例代码如下: namespace SampleListT { class Program { static void Main(string[] args) { //using System.Collections.Generic; 命名空间中的List //using System.Collections;命名空间中的ArrayList //都实现了列表集合,一个是泛形集合,一个是非泛型的 //下面我们将Person对象加到集合中 Person p1 = new Person( "aladdin" , 20 ); Person p2 = new Person("zhao", 10); Person p3 = new Person("jacky", 40); //如果不制定list的容器大小,默认是0,只要有元素加入是,会自动扩展到4,如果第5个元素加 入时,就变成了8,第9个加入,就成16 //可以看出,总是成倍的增长,扩展时要重新开辟内存,这样会影响效率,如果事先知道元素个 数,或者可能个数,最好给个尽量大的权衡值 //我们加入3个元素,设容器大小为4.注:设为4不是指只能放4个元素,如果超出,一样也会成倍扩展,这样做只是为了尽量扩展带来的开销 List list = new List(4); list.Add(p1); list.Add(p2); list.Add(p3);

//本方法是清除多于的没有用的内存空间,例:如果开辟大小为100,而我们只用了4个,其余 的放着,是不是很浪费 //本方法调用时会检查元素个数是不是占到了容器大小的90%以上,如果是,则不进行回收. list.TrimExcess(); //ArrayList方法与List<>用法一样,不同的是,它是对象集合,参数是Object这样会有装箱拆 箱的可能,尽量用List<> //本处不再做演示 // 1 初始化集合器 // C#3.0开始,提供了初始化功能,但是并没有反应到IL代码中,在IL中,一样也是把个转 化成ADD方法来调用 List l2 = new List() { 1 ,2 ,3 ,4 ,5 }; // 2 添加元素AddRange() 本方法可以一次性添加一批对象 List lists = new List(10); //参数是一个必须可能跌代的对象,也可是数组 list.AddRange( new Person[] { new Person( "aladdin" ,20) , new Person("zhao",6)}); //构造传入批量参数,与AddRange效果一样 List mylist = new List(new Person[] { new Person( "aladdin" ,20) , new Person("zhao",6)}); // 3 插入元素 // 使用Insert()方法,可以在指定位置插入元素 // 例我们在1位置插入则最后变成了aladdin jacky zhao..插入意思就是,这个位我占了,以前 占这位的和他之后的,通通往后移一位 mylist.Insert( 1 , new Person( "jacky" , 88 ));

Java类集合之List详解

Java集合框架之List详解 ArrayList 首先我们熟悉下ArrayList类中常用方法的使用。 1)添加:public boolean add(Object e):将指定的元素(对象)添加到此列表的尾部 2)获取:public Object get(int index):返回此列表中指定位置(索引)上的元素。 3)元素的个数:public int size():返回此列表中的元素数。 4)清空:public void clear():移除此列表中的所有元素。此调用返回后,列表将为空。 5)是否为空:public boolean isEmpty():如果此列表中没有元素,则返回 true 6)移除(删除):public E remove(int index):移除此列表中指定位置上的元素。向左移动所有后续元素(将其索引减 1)。 7)移除(重载):public boolean remove(Object o):移除此列表中首次出现的指定元素(如果存在)。如果列表不包含此元素,则列表不做改动。更确切地讲,移除满足 (o==null ? get(i)==null : o.equals(get(i))) 的最低索引的元素(如果存在此类元素)。如果列表中包含指定的元素,则返回 true (或者等同于这种情况:如果列表由于调用而发生更改,则返回 true)。8)获得索引:public int indexOf(Object o): 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。更确切地讲,返回满足(o==null ? get(i)==null : o.equals(get(i))) 的最低索引 i ,如果不存在此类索引,则返回 -1。 如何使用这些方法,代码如下: import java.util.ArrayList; public class ArrayListTest { public static void main(String[] args) { ArrayList list=new ArrayList(); /* * 添加 */ list.add("hello"); list.add(" world"); list. add(" welcome"); /* * 获得 */ String s1=(String)list.get(0);

List 使用方法

List泛型集合 集合是O O P中的一个重要概念,C#中对集合的全面支持更是该语言的精华之一。 为什么要用泛型集合? 在C# 2.0之前,主要可以通过两种方式实现集合: a.使用A r r a y L i s t 直接将对象放入A r r a y L i s t,操作直观,但由于集合中的项是O b j e c t类型,因此每次使用都必须进行繁琐的类型转换。 b.使用自定义集合类 比较常见的做法是从C o l l e c t i o n B a s e抽象类继承一个自定义类,通过对I L i s t对象进行封装实现强类型集合。这种方式要求为每种集合类型写一个相应的自定义类,工作量较大。泛型集合的出现较好的解决了上述问题,只需一行代码便能创建指定类型的集合。 什么是泛型? 泛型是C# 2.0中的新增元素(C++中称为模板),主要用于解决一系列类似的问题。这种机制允许将类名作为参数传递给泛型类型,并生成相应的对象。将泛型(包括类、接口、方法、委托等)看作模板可能更好理解,模板中的变体部分将被作为参数传进来的类名称所代替,从而得到一个新的类型定义。泛型是一个比较大的话题,在此不作详细解析,有兴趣者可以查阅相关资料。 怎样创建泛型集合? 主要利用S y s t e m.C o l l e c t i o n s.G e n e r i c命名空间下面的L i s t 泛型类创建集合,语法如下: 定义P e r s o n类如下: 可以看到,泛型集合大大简化了集合的实现代码,通过它,可以轻松创建指定类型的集合。非但如此,泛型集合还提供了更加强大的功能,下面看看其中的排序及搜索。 L i s tL i s t O f T=n e w L i s t(); 其中的"T"就是所要使用的类型,既可以是简单类型,如s t r i n g、i n t,也可以是用户自定义类型。下面看一个具体例子。 c l a s s P e r s o n { p r i v a t e s t r i n g_n a m e;//姓名 p r i v a t e i n t_a g e;//年龄

Java集合Collection、List、Set、Map使用详解

Java集合排序及java集合类详解(Collection, List, Set, Map) 摘要内容 集合是Java里面最常用的,也是最重要的一部分。能够用好集合和理解好集合对于做Java程序的开发拥有无比的好处。本文详细解释了关于Java中的集合是如何实现的,以及他们的实现原理。 目录 1 集合框架 (1) 1.1 集合框架概述 (2) 1.1.1 容器简介 (2) 1.1.2 容器的分类 (4) 1.2 Collection (6) 1.2.1 常用方法 (6) 1.2.2 迭代器 (8) 1.3 List (10) 1.3.1 概述 (10) 1.3.2 常用方法 (11) 1.3.3 实现原理 (15) 1.4 Map (18) 1.4.1 概述 (18) 1.4.2 常用方法 (18) 1.4.3 Comparable 接口 (23) 1.4.4 实现原理 (24) 1.4.5 覆写hashCode() (29) 1.5 Set (33) 1.5.1 概述 (33) 1.5.2 常用方法 (33) 1.5.3 实现原理 (38) 1.6 总结:集合框架中常用类比较 (39) 2 练习 (40) 3 附录:排序 (41) 1集合框架

1.1集合框架概述 1.1.1容器简介 到目前为止,我们已经学习了如何创建多个不同的对象,定义了这些对象以后,我们就可以利用它们来做一些有意义的事情。 举例来说,假设要存储许多雇员,不同的雇员的区别仅在于雇员的身份证号。我们可以通过身份证号来顺序存储每个雇员,但是在内存中实现呢?是不是要准备足够的内存来存储1000个雇员,然后再将这些雇员逐一插入?如果已经插入了500条记录,这时需要插入一个身份证号较低的新雇员,该怎么办呢?是在内存中将500条记录全部下移后,再从开头插入新的记录? 还是创建一个映射来记住每个对象的位置? 当决定如何存储对象的集合时,必须考虑如下问题。 对于对象集合,必须执行的操作主要以下三种: ◆添加新的对象 ◆删除对象 ◆查找对象 我们必须确定如何将新的对象添加到集合中。可以将对象添加到集合的末尾、开头或者中间的某个逻辑位置。 从集合中删除一个对象后,对象集合中现有对象会有什么影响呢?可能必须将内存移来移去,或者就在现有对象所驻留的内存位置下一个“洞”。 在内存中建立对象集合后,必须确定如何定位特定对象。可建立一种机制,利用该机制可根据某些搜索条件(例如身份证号)直接定位到目标对象;否则,便需要遍历集合中的每个对象,直到找到要查找的对象为止。 前面大家已经学习过了数组。数组的作用是可以存取一组数据。但是它却存在一些缺点,使得无法使用它来比较方便快捷的完成上述应用场景的要求。 1.首先,在很多数情况下面,我们需要能够存储一组数据的容 器,这一点虽然数组可以实现,但是如果我们需要存储的数据 的个数多少并不确定。比如说:我们需要在容器里面存储某个

集合精华总结(集合,list,set,queue,map)

集合总结 集合框架(简化) Collection接口用于表示任何对象或元素 组。想要尽可能以常规方式处理一组元素时,就使 用这一接口。注意:集合必须只有对象,集合中的元 素不能是基本数据类型。Collection不提供get()方法。 如果要遍历Collectin中的元素,就必须用Iterator。 MAP接口不是Collection 接口的继承。而 是从自己的用于维护键-值关联的接口层次结构 入手。按定义,该接口描述了从不重复的键到可 以重复值的映射。

方法外还拥有一些其他的方法。在集合框架 中,不仅仅是List,所有的集合类,如果需要判 断里面是否存放了的某个对象,都是调用该对象 的equals()方法来进行处理的。 组数据,但是对于存取方式有 一定的要求,必须遵循先进先 出原则(FIFO),常用的子类实 现LinkedList Deque 是Queue的子接口,使用双端队列时,我们若只允许元 素都是一个方向进出,则实现了栈结构,栈结构存取元素要本着先进后 出原则(FILO) , LinkedList实现了Deque。 Set中的方法与直接使用Collection中的方法 一样。唯一需要注意的就是Set中存放的元素不能 重复。其实HashSet的实现,全部的操作都是基于 HashMap来进行的。

在java的集合中,判断两个对象是否相等的规则是: 1),判断两个对象的hashCode是否相等:如果不相等,认为两个对象也不相等,完毕;如果相等,转入2) 。(这一点只是为了提高存储效率而要求的,其实理论上没有也可以,但如果没有,实际使用时效率会大大降低,所以我们这里将其做为必需的。后面会重点讲到这个问题。) 2),判断两个对象用equals运算是否相等:如果不相等,认为两个对象也不相等;如果相等,认为两个对象相等(equals()是判断两个对象是否相等的关键) 在“集合框架”中有两种比较接口:Comparable接口和Comparator接口。 那Comparable 和 Comparator 接口有什么区别呢? Comparable——“静态绑定排序”,Comparator——“动态绑定排序”。 用自定义类实现Comparable接口,那么这个类就具有排序功能,Comparable和具体你要进行排序的类的实例绑定。 而Comparator比较灵活,只需要通过构造方法指定一个比较器就行了实现它的自定义类仅仅定义了一种排序方式或排序规则。不言而喻,这种方式比较灵活。我们的要排序的类可以分别和多个实现Comparator接口的类绑定,从而达到可以按自己的意愿实现按多种方式排序的目的。

list集合

这次我们学习的主要内容为:集合框架List 一集合框架介绍 List集合与数组的区别: 不同点:1>数组的长度在使用前必须确定,一旦确定不能改变。而List集合长度可变,无须定义。 2> 数组中必须存放同一数据类型的数据,List集合中可以存放不同类型的数据。 数组举例:String[] name=new String[5]; 二List集合的常用方法 返回类 型 方法名称说明 boolean add(Object obj)加入元素,返回是否添 加成功 void clear()清除集合中的元素 boolean contains(Object obj)查找集合中是否存在传入的元素 Object get(int index)获取指定位置的元素boolean isEmpty()判断集合是否为空 Object Remove(int index)删除指定位置的元素,并返回该元素 int size()获取集合的大小Object[]toArray()将集合转换成数组

注意:保存基本类型时用到了装箱拆箱;保存对象应重写equals方法。 数组操作: package com.huizhong; public class ArrayDemo { public static void main(String[] args) { String[] array=new String[3]; for(int i = 0; i < 3; i++) { array[i]="hello"; } String str=array[0]; System.out.println(str); } } List集合: package com.huizhong; import java.util.*; public class ListDemo { public static void main(String[] args) { ArrayList list=new ArrayList(); for(int i = 0; i < 3; i++) { list.add("hello"); String str=(String) list.get(0); System.out.println(str); } } } 未重写equals前 package com.huizhong; import java.util.*; public class Demo { public static void main(String[] args) { ArrayList list=new ArrayList();

list、Map、Set集合的特点及常用方法

一.List集合: 一次只存储一个元素 1.常用的list集合是ArrayList (1)在创建这个集合的对象时, 一定要指定这个集合存储的数据类型! 否则这个集合的数据是不安全的。 (2)与数组的区别: ①数组的长度是固定的, 集合的长度是可变的。 ②数组可以存储基本类型和引用数据类型的数据.集合不可以存储基本数据类型, 只能存储引用数据类型。 2.基本数据类型的包装类 (1)byte ---> Byte (2)short---> Short (3)int---> Integer (4)long--->Long (5)float--->Float (6)double ---> Double (7)char---> Character (8)boolean---> Boolean 3.如果集合中需要存储基本类型的数据, 集合的类型必须指定为对应的包装类型。4.list集合中的常用方法(E:element元素) (1)add(E): 往集合中添加一个元素 (2)add(index,E): 把元素添加到指定的位置, 原来的内容会被挤到后面 (3)get(index): 通过索引获取集合中对应的内容 (4)size(): 获取集合的大小 (5)remove(index): 根据索引删除指定位置的内容, 返回被删除的元素 (6)remove(Object): 删除集合中的指定对象, 如果有多个相同的对象, 只会删除第一个.(7)contains(E): 判断集合中是否包含指定的元素 (8)indexOf(E): 获取元素在集合中第一次出现的位置 (9)lastIndexOf(E): 获取元素在集合中最后一次出现的位置 (10)isEmpty(): 判断集合中的元素是否为空 (11)set(index,E): 把指定位置的内容修改掉, 返回的是被修改的内容 (12)clear(): 清空集合中的所有元素 (13)toArray(): 把集合转换成Object数组,注意不能转换成其他数组! 5.包装类与基本类型 (1)包装类型对象的创建: 例如: Integer i = new Integer(10); Integer i = new Integer(“100”)(2)将基本数据类型的数据直接赋值给包装类型: Integer i = 10; (3)基本类型和包装类型可以直接互相转换。 6.把一个字符串整数转换成整数类型的方式: (1)通过Integer的构造方法转换: Integer i = new Integer(“100”) (2)通过Integer的静态方法parseInt来转换 (3)通过Integer的静态方法valueOf来转换 7.总结:

Java中集合容器类List和Set的用法

Java中集合容器类List和Set的用法 [导读]容器类可以大大提高编程效率和编程能力,在Java2中,所有的容器都由SUN公司的JoshuaBloch进行了重新设计,丰富了容器类库的功能。 容器类可以大大提高编程效率和编程能力,在Java2中,所有的容器都由SUN公司的JoshuaBloch进行了重新设计,丰富了容器类库的功能。 Java2容器类类库的用途是“保存对象”,它分为两类: Collection----一组独立的元素,通常这些元素都服从某种规则。List必须保持元素特定的顺序,而Set不能有重复元素。 Map----一组成对的“键值对”对象,即其元素是成对的对象,最典型的应用就是数据字典,并且还有其它广泛的应用。另外,Map可以返回其所有键组成的Set和其所有值组成的Collection,或其键值对组成的Set,并且还可以像数组一样扩展多维Map,只要让Map中键值对的每个“值”是一个Map即可。 1.迭代器 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 Java中的Iterator功能比较简单,并且只能单向移动: (1)使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。 (2)使用next()获得序列中的下一个元素。 (3)使用hasNext()检查序列中是否还有元素。 (4)使用remove()将迭代器新返回的元素删除。 Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。 2.List的功能方法 List(interface):次序是List最重要的特点;它确保维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(只推荐LinkedList使用)。一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和删除元素。 ArrayList:由数组实现的List。它允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList,而不是用来插入和删除元素,因为这比LinkedList开销要大很多。

高效的找出两个List中的不同元素

如题:有List list1和List list2,两个集合各有上万个元素,怎样取出两个集合中不同的元素? 方法1:遍历两个集合: package com.czp.test; import java.util.ArrayList; import java.util.List; public class TestList { public static void main(String[] args) { List list1 = new ArrayList(); List list2 = new ArrayList(); for (int i = 0; i < 10000; i++) { list1.add("test"+i); list2.add("test"+i*2); } getDiffrent(list1,list2); //输出:total times 2566454675 } /** * 获取两个List的不同元素

* @param list1 * @param list2 * @return */ private static List getDiffrent(List list1, List list2) { long st = System.nanoTime(); List diff = new ArrayList(); for(String str:list1) { if(!list2.contains(str)) { diff.add(str); } } System.out.println("total times "+(System.nanoTime()-st)); return diff; } } 千万不要采用这种方法,总共要循环的次数是两个List的size相乘的积,从输出看耗时也是比较长的,那么我们有没有其他的方法呢?当然有. 方法2:采用List提供的retainAll()方法:

Java 常用的三个集合类

Java 常用的三个集合类 讲集合collection之前,我们先分清三个概念: colection集合,用来表示任何一种数据结构 Collection集合接口,指的是java.util.Collection接口,是Set、List和Queue 接口的超类接口 Collections 集合工具类,指的是java.util.Collections 类。 我们这里说的集合指的是小写的collection,集合有4种基本形式,其中前三种的父接口是Collection。 List 关注事物的索引列表 Set 关注事物的唯一性

Queue 关注事物被处理时的顺序 一、Collection 接口 Collection接口是Set 、List 和Queue 接口的父接口,提供了多数集合常用的方法声明,包括add()、remove()、contains() 、size() 、iterator() 等。 add(E e) 将指定对象添加到集合中 remove(Object o) 将指定的对象从集合中移除,移除成功返回true,不成功返回false contains(Object o) 查看该集合中是否包含指定的对象,包含返回true,不包含返回flase size() 返回集合中存放的对象的个数。返回值为int clear() 移除该集合中的所有对象,清空该集合。 iterator() 返回一个包含所有对象的iterator对象,用来循环遍历 toArray() 返回一个包含所有对象的数组,类型是Object toArray(T[] t) 返回一个包含所有对象的指定类型的数组 我们在这里只举一个把集合转成数组的例子,因为Collection本身是个接口所以,我们用它的实现类ArrayList做这个例子: import java.util.ArrayList; import java.util.Collection; public class CollectionTest { public static void main(String[] args) { String a = "a",b="b",c="c";

Java list 集合类

Java list 集合类 在JDK API中专门设计了一组类,这组类的功能就是实现各种各样方式的数据存储,这样一组专门用来存储其它对象的类,一般被称为对象容器类,简称容器类,这组类和接口的设计结构也被统称为集合框架(Collection Framework)。 这组类和接口都包含在java.util包中。 为了使整个集合框架中的类便于使用,在设计集合框架时大量的使用接口,实际实现的功能类实现对应的接口,这样可以保证各个集合类的使用方式保持统一。 在集合框架中,提供的存储方式共有两种: 1、按照索引值操作数据 在这种存储方式中,为每个存储的数据设定一个索引值,存储在容器中的第一个元素索引值是0,第二个索引值是1,依次类推。在操作数据时按照索引值操作对应的数据,实现这种方式的集合类都实现java.util.Collection接口。 2、按照名称操作数据 在这种存储方式中,为每个存储的数据设定一个名称(任意非null的对象都可以作为名称),以后按照该名称操作该数据,要求名称不能重复,每个名称对应唯一的一个值。这种存储数据的方式也称作名称-数值对,也就是名值对存储。实现这种方式的几个类都实现java.util.Map接口。 这里“按照索引值操作数据”的存储方式,又按照容器内部是否能够存储重复的元素,划分成两类: 1、允许存储重复元素。 这种存储方式中,所有的类都实现了java.util.List接口。 2、不允许存储重复元素。 这种存储方式中,所有的类都实现了java.util.Set接口。 这样,集合框架中的类就分成了三大类: 1、List系列 该系列中的类按照索引值来操作数据,允许存放重复的元素。 2、Set系列 该系列中的类按照索引值来操作数据,不允许存放重复的元素。

两个集合List交集

//获取两个集合的交集list、list1 ,结果保存到list public static void main(String[] args) { List list = new ArrayList(); List list1 = new ArrayList(); list.add("春天"); list.add("夏天"); list.add("秋天"); list.add("冬天"); list1.add("春天"); list1.add("秋天"); list1.add("天"); list.retainAll(list1); //如果此 collection 由于调用而发生更改,则返回 true System.out.println(list1.retainAll(list));//发生更改,去除了“天”,list1中去除不在list中的元素 System.out.println(list1);//print:[春天, 秋天] List list2 = new ArrayList(); list1.remove("天"); list2 = list1; System.out.println(list2); //[春天, 秋天] System.out.println(list2.retainAll(list));//没发生更改,返回false System.out.println(list2);//[春天, 秋天] } public static void main(String[] args) { ArrayList listA= new ArrayList(); listA.add("Tom"); ArrayList listB= new ArrayList(); listB.add("Jack"); System.out.println(listA.retainAll(listB));//true } 我们要记住:当集合A的大小改变的时候返回的是True,大小没有改变的时候返回的是False。 正确的使用retainAll方法 public static void main(String[] args) {

java中List集合的应用

1.数组列数据的添加与删除: List list = new LinkedList(); list = new ArrayList(); 产生一个数组列对象并建立双向连表。 连表分为单向连表和双向连表;单向连表就像:a只能到b,b不能到c;双向连表就像:a 可以到b,b也可以到a。 双向连表的作用是:可以在数列的任何地方插入数据。 list.add(0, "b"); 在数组列里添加数据,0表示数组里的下标,"b"表示添加的数据。 建立双向连表后可以用0 的变化来在数列的任何地方插入数据。 如:在数组列的最后插入数据list.add(list.size(), "any"); b = list.remove("b"); b = list.remove(0); 删除数列中的数据,可以用以上两种方法来删除。一种是找对象,一种是找下标。 2.排序: String[] strArray = new String[] {"z", "a", "C"}; List list = Arrays.asList(strArray); 一个数组列对象并且是和strArray的大小一样。 Collections.sort(list); 按照ASCII的升序排序。 Collections.sort(list, String.CASE_INSENSITIVE_ORDER); 按照英文字母顺序排序,忽略大小写。 Collections.sort(list, Collections.reverseOrder()); 按照ASCII的降序排序。

Collections.sort(list, String.CASE_INSENSITIVE_ORDER); Collections.reverse(list); 先按照英文字母顺序排序,然后再用降序排序。 3.list的操作: list1.retainAll(list2); 只保留list1和list2中相同的部分(交集)? list1.subList(newSize, list1.size()).clear(); 返回newSize到list1.size之间的部分。 方法总结: list.add():添加数据list.remove():删除数据 Arrays.asList():指定大小的列 Collections.sort():按ASCII升序排序 Collections.reverseOrder()和Collections.reverse():按ASCII降序排序,区别在于参数list.addAll():添加()所有数据list.removeAll():删除()所有数据 list.retainAll():保留交集 list.subList(size1, size2):返回size1到size2之间的数据

Java集合类ListSetMap的区别和联系

Java集合类List/Set/Map的区别和联系1(2009-04-01 21:34:53) 一、Array ,Arrays Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。 1、 效率高,但容量固定且无法动态改变。 array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。 2、Java中有一个Arrays类,专门用来操作array。 arrays中拥有一组static函数, equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。fill():将值填入array中。 sort():用来对array进行排序。 binarySearch():在排好序的array中寻找元素。 System.arraycopy():array的复制。 二、Collection ,Map 若撰写程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。 1、Collection 和Map 的区别 容器内每个为之所存储的元素个数不同。 Collection类型者,每个位置只有一个元素。 Map类型者,持有key-value pair,像个小型数据库。 2、各自旗下的子类关系 Collection --List:将以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。 --ArrayList / LinkedList / Vector --Set :不能含有重复的元素 --HashSet / TreeSet Map --HashMap --HashTable --TreeMap 3、其他特征 * List,Set,Map将持有对象一律视为Object型别。 * Collection、List、Set、Map都是接口,不能实例化。 继承自它们的ArrayList, Vector, HashTable, HashMap是具象class,这些才可被实例化。* vector容器确切知道它所持有的对象隶属什么型别。vector不进行边界检查。 三、Collections Collections是针对集合类的一个帮助类。提供了一系列静态方法实现对各种集合的搜索、排序、线程完全化等操作。 相当于对Array进行类似操作的类——Arrays。 如,Collections.max(Collection coll); 取coll中最大的元素。 Collections.sort(List list); 对list中元素排序 四、如何选择?

相关文档