集合里Map,Set,List的区别

合集下载

NTT面试问题

NTT面试问题

1、说一下 “==”和equals()方法在字串变量操作中的不同? 答:”==”比较的是两个字符串对象的地址,equals()是比较的两个字符串的具体值。2、接口是否可继承接口? 抽象类是否可实现接口? 抽象类是否可继承实体类? 答:接口是可以继承接口的并且可以继承多个其它接口;抽象类可以实现接口中的方法;抽象类可以继承实体类。3、请说出集合类中List、Map、Set的区别 答:List和Set继承了Collection接口,而map不是;List中存放元素有顺序并且可以重复;set中存放的元素是无序并且是不可能重复的;Map中存放是键值对。4、HashMap与TreeMap的区别?答:HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。5、HashMap和Hashtable的区别? 答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是,Hastable的方法是synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。6、j2ee常用的设计模式?说明工厂模式?答:Java中的23种设计模式:Factory(工厂模式), Builder(建造模式),Factory Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式),Adapter(适配器模式),Bridge(桥梁模式),Composite(组合模式),Decorator(装饰模式),Flyweight(享元模式),Proxy(代理模式),Command(命令模式),Interpreter(解释器模式),Visitor(访问者模式),Iterator(迭代器模式),Mediator(调停者模式),Memento(备忘录模式),Observer(观察者模式),State(状态模式),Strategy(策略模式),Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需

java中集合的概念

java中集合的概念

java中集合的概念

Java中的集合是一种非常重要的数据结构,用于存储和操作一组对象。集合框架包含了许多类和接口,可以方便地进行数据的存储、查询、排序等操作,使得Java程序开发变得更加高效和便捷。在本文中,我们将逐步介绍Java中集合的概念和用法。

一、集合框架概述

Java中的集合框架是一个包含了多个接口和类的层次结构,用于表示和操作一组对象。集合框架包含了通用的集合接口和实现,以及特定的集合类和接口,如List、Set、Map等。集合框架的接口和类都是通过泛型实现的,可以存储任意类型的对象,比如基本类型和自定义类型的对象。

二、集合框架的接口

Java中的集合框架包含了多个接口,其中包括:

1. Collection:代表一组对象的集合,是其他集合接口的父接口。它定义了一些通用的方法,如添加、删除、迭代等。

2. List:代表有序的集合,其中每个元素都有一个对应的索引。List允许重复元素出现,并且可以通过索引访问、添加、删除元素。

3. Set:代表无序的集合,其中每个元素都是唯一的。Set不允许重复的元素出现,可以用来去重。

4. Map:代表一组键值对的集合,其中每个键都是唯一的。Map 允许多个值对应同一个键,可以用来快速查找和存储数据。

三、集合类的实现

Java中的集合类可以通过实现集合接口来实现。如ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等都是集合类的实现,我们可以通过这些集合类来方便地实现对一组对象的操作。例如:

1. 使用ArrayList来实现List接口,可以进行元素的添加、删除、查询等操作:

list,set,map,数组之间的相互转换详细解析

list,set,map,数组之间的相互转换详细解析

list,set,map,数组之间的相互转换详细解析1.list转set

Set set = new HashSet(new ArrayList());

2.set转list

List list = new ArrayList(new HashSet());

3.数组转为list

List stooges = Arrays.asList("Larry", "Moe", "Curly");

或者

String[] arr = {"1", "2"};

List list = Arrays.asList(arr);

4.数组转为set

int[] a = { 1, 2, 3 };

Set set = new HashSet(Arrays.asList(a));

5.map的相关操作。

Map map = new HashMap();

map.put("1", "a");

map.put('2', 'b');

map.put('3', 'c');

System.out.println(map);

// 输出所有的值

System.out.println(map.keySet());

// 输出所有的键

System.out.println(map.values());

// 将map的值转化为List

List list = new ArrayList(map.values());

System.out.println(list);

// 将map的值转化为Set

Set set = new HashSet(map.values());

System.out.println(set);

java集合的定义(一)

java集合的定义(一)

java集合的定义(一)

Java集合

定义

•Java集合是一种用于存储数据的数据结构,它提供了一系列方法来操作数据。

•Java集合框架提供了一套接口(Interface)和相关的实现类(Implementation Class),使开发人员可以方便地使用和管理数据。

常用的Java集合接口

•List:有序的、可重复的集合,如ArrayList、LinkedList。•Set:不允许重复的集合,如HashSet、TreeSet。

•Map:键值对的集合,如HashMap、TreeMap。

Java集合的优点

1.高效性:Java集合框架提供了高效的数据结构和算法,使得数据

的增删改查操作更加高效。

2.灵活性:Java集合提供了多种数据结构的实现,开发人员可以根

据需求选择适合的集合类型。

3.可扩展性:Java集合框架采用接口与实现分离的设计方式,使得

开发人员可以自定义实现类来满足特定需求。

4.线程安全性:Java集合框架提供了线程安全的集合类,如

ConcurrentHashMap,可以在多线程环境下安全地操作数据。

推荐书籍

•《Java核心技术卷I:基础知识》 - 这本书是Java程序员的必读经典之一,其中包含了对Java集合框架的详细讲解。它从

基础的集合接口开始,逐步介绍了ArrayList、LinkedList、

HashSet、TreeSet、HashMap等常用集合类的用法和特点,并提供了大量的代码示例和实践项目,帮助读者深入理解和运用集合框架。

总结

Java集合是一种重要的数据结构,在Java编程中得到了广泛应用。它的高效性、灵活性、可扩展性和线程安全性使其成为Java程序开发的利器。选择合适的集合类型,并掌握其常用方法,可以提高程序的效率和可维护性。阅读相关的书籍,如《Java核心技术卷I:基础知识》,能够系统地学习和掌握Java集合框架的知识。

Map、Set、List集合差别及联系详解

Map、Set、List集合差别及联系详解

Map、Set、List集合差别及联系详解

提到集合之前,先说说数组Array和集合的区别:

(1)数组是⼤⼩固定的,并且同⼀个数组只能存放类型⼀样的数据(基本类型/引⽤类型)

(2)JAVA集合可以存储和操作数⽬不固定的⼀组数据。

(3)若程序时不知道究竟需要多少对象,需要在空间不⾜时⾃动扩增容量,则需要使⽤容器类库,array不适⽤。

FYI:使⽤相应的toArray()和Arrays.asList()⽅法可以相互转换。

⼀、集合

集合类存放于java.util包中。

集合类存放的都是对象的引⽤,⽽⾮对象本⾝,出于表达上的便利,我们称集合中的对象就是指集合中对象的引⽤(reference)。

集合类型主要有3种:set(集)、list(列表)和map(映射)。

⼀、这三者什么关系呢

Collection

├List

│├LinkedList

│├ArrayList

│└Vector

│ └Stack

└Set

Map

├Hashtable

├HashMap

└WeakHashMap

1.Collection接⼝

Collection是最基本的集合接⼝,⼀个Collection代表⼀组Object,即Collection的元素(Elements)。Java SDK不提供直接继承⾃Collection的类,Java SDK提供的类都是继承⾃Collection 的“⼦接⼝”如List和Set。

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

自-亿阳信通面试笔试题及答案

自-亿阳信通面试笔试题及答案

亿阳通信笔试题

1、list 、set、map有什么区别?

2、抽象类和接口的区别?

3、连接ORACLE数据库

4、什么是序列化?

5、多线程终止?

6、读出文件,显示行号?

7、RuntimeException和Exception区别?

亿阳通信笔试题

1、list 、set、map 有什么区别?

List有序key和value都能重复

Set 无序(除treeSet) key和value都不能重复

Map无序(除treeMap) key 必须唯一value 可以重复

2、抽象类和接口的区别?

抽象类里面可以有非抽象方法

但接口里只能有抽象方法

声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abst ract 类的实例。然而可以创建一个变量,其类型是一个抽像类,并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静态方法。Abstract 类的子类为它们父类中的所有抽像方法提供实现,否则它们也是抽像类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

接口(interface)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。接口只可以定义staticfinal成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

javalist,set,map,数组间的相互转换详解

javalist,set,map,数组间的相互转换详解

javalist,set,map,数组间的相互转换详解

java list,set,map,数组间的相互转换详解

1.list转set

Set set = new HashSet( new ArrayList());

2.set转list

List list = new ArrayList( new HashSet());

3.数组转为list

List stooges = Arrays.asList( "Larry" , "Moe" , "Curly" );

此时stooges中有有三个元素。注意:此时的list不能进⾏add操作,否则会报

“ng.UnsupportedOperationException”,Arrays.asList()返回的是List,⽽且是⼀个定长的List,所以不能转换为ArrayList,只能转换为AbstractList

原因在于asList()⽅法返回的是某个数组的列表形式,返回的列表只是数组的另⼀个视图,⽽数组本⾝并没有消失,对列表的任何操作最终都反映在数组上. 所以不⽀持remove,add⽅法的

String[] arr = { "1" , "2" };

List list = Arrays.asList(arr);

4.数组转为set

int [] a = { 1 , 2 , 3 };

Set set = new HashSet(Arrays.asList(a));

5.map的相关操作。

Map map = new HashMap();

map.put("1" , "a" );

集合类的分类

集合类的分类

集合类的分类

1.List结构集合类

ArrayList LinkedList Vector(向量) Stack(盏)2。Map结构集合类

HashMap HashTable

3.Set结构集合类

HashSet TreeSet

4.Queue接口集合类和Queue接口

Java核心数据结构(List、Map、Set)原理与使用技巧

Java核心数据结构(List、Map、Set)原理与使用技巧

Java核⼼数据结构(List、Map、Set)原理与使⽤技巧

JDK提供了⼀组主要的数据结构实现,如List、Set等常⽤数据结构。这些数据都继承⾃java.util.Collection接⼝,并位于java.util包内。⼀、List接⼝

最重要的三种List接⼝实现:ArrayList、Vector、LinkedList。它们的类图如下:

可以看到,3种List均来⾃AbstratList的实现。⽽AbstratList直接实现了List接⼝,并扩展⾃AbstratCollection。

ArrayList和Vector使⽤了数组实现,可以认为,ArrayList封装了对内部数组的操作。⽐如向数组中添加、删除、插⼊新的元素或数组的扩展和重定义。对ArrayList或者Vector的操作,等价于对内部对象数组的操作。

ArrayList和Vector⼏乎使⽤了相同的算法,它们的唯⼀区别可以认为是对多线程的⽀持。ArrayList没有对⼀个⽅法做线程同步,因此不是线程安全的。Vector中绝⼤多数⽅法都做了线程同步,是⼀种线程安全的实现。因此ArrayList和Vector的性能特性相差⽆⼏。

LinkedList使⽤了循环双向链表数据结构。LinkedList由⼀系列表项连接⽽成。⼀个表项总是包含3个部分:元素内容、前驱表项和后驱表项。如图所⽰:

LinkedList的表项源码:

private static class Node<E> {

E item;

Node<E> next;

List集合与Set集合的区别(面试题)

List集合与Set集合的区别(面试题)

List集合与Set集合的区别(⾯试题)

⼀般来说,如果被别⼈问到⼀个问题:谁和谁的区别,在回答问题的时候,第⼀步应该回答的是他们之间有什么相似之处,充分变现出对技术的理解。

相同点:List和Set都是Collection集合的⼦级接⼝!所以都具有Collection这个借⼝所定义的所有的⽅法,⽐如添加和移除元素。

不同点:List是序列的,主要表现为其中的各元素在内存中是存在顺序规则的;另外,List中的元素是可以重复的,即可以向同⼀个List集合中反复添加相同的数据;

Set是散列的,主要表现为其中的各元素在内存中的位置是散列的,如果使⽤不同的实现类来存储数据,最终在显⽰Set集合中的所有元素时,显⽰结果可能是⽆序的(HashSet),或根据排序规则进⾏排列的(TreeSet),或根据添加顺序进⾏排列的(LinkedHashSet);(注意并不是说整个集合是,⽽是最后的显⽰结果,看到的结果是这样的)。所以不能直接说Set是⽆序的。

另外,Set中的元素是不可重复的,即不可以向同⼀个Set集合中反复添加相同的数据,关于“是否相同”,取决于equals()的对⽐结果

与hashCode()值的对⽐,如果2个对象的equals()对⽐为true,并且hashCode()值相等,则视为“相同”!

所以,是否相同,取决于hashCode和equals⽅法,是先⽐较的hashCode再⽐较equals,如果hashCode相同,再⽐较equals,如果hashCode不同,就不⽐较了。

⼀、注意:不要⽤有序和⽆序来描述List集合和Set集合。

集合面试题java

集合面试题java

集合面试题java

1. 什么是集合?

集合是Java中的一个常用数据结构,用来存储一组有序或无序的数据。它是由一组固定大小的元素构成,可以添加、删除和访问其中的元素。Java中的集合类被包含在java.util包中。

2. Java中有哪些类型的集合?

Java中有三种类型的集合,分别是List、Set和Map。

- List:可以存储有序的元素,可以包含重复的元素。常见的List类有ArrayList和LinkedList。

- Set:主要用于存放无序、不可重复的元素,不存在索引。常见的Set

类有HashSet和TreeSet。

- Map:用于存储键值对,每个存储的元素包含两部分,即键和值。常

见的Map类有HashMap和TreeMap。

3. ArrayList和LinkedList的区别是什么?

ArrayList是基于数组实现的集合,具有一定的随机访问性能,可以快

速获取指定位置的元素。但是它在插入和删除元素时效率相对较低,

需要重新排列数组。而LinkedList是基于链表实现的集合,插入和删除元素时速度比ArrayList要快,但是获取指定位置的元素需要遍历整个链表,效率相对较低。

4. HashSet和TreeSet的区别是什么?

HashSet是基于哈希表实现的集合,不保证元素的顺序,具有快速的添加、删除和查找元素的能力。但是它不支持对元素的有序遍历。而TreeSet是基于红黑树实现的集合,对元素进行自然排序或者指定排序规则进行排序,可以通过迭代器对元素进行有序的遍历。

5. 什么是迭代器?

list、set、map的区别

list、set、map的区别

set --其中的值不允许重复,无序的数据结构

list --其中的值允许重复,因为其为有序的数据结构

map--成对的数据结构,健值必须具有唯一性(键不能同,否则值替换)

List按对象进入的顺序保存对象,不做排序或编辑操作。Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺

序--否则应该使用List)。Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该

使用 LinkedHashSet或者LinkedHashMap.

List的功能方法

实际上有两种List: 一种是基本的ArrayList,其优点在于随机访问元素,另一种是更

强大的LinkedList,它并不是为快速随机访问设计的,而是具有一套更通用的方法。

List : 次序是List最重要的特点:它保证维护元素特定的顺序。List为Collection添加

了许多方法,使得能够向List中间插入与移除元素(这只推荐LinkedList使用。)一

个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和移除元素。

ArrayList : 由数组实现的List。允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList,而不是用来插入和移除元素。因为那比LinkedList开销要大很多。

【笔面试题目】Java集合相关的面试题-List、Map、Set等

【笔面试题目】Java集合相关的面试题-List、Map、Set等

【笔⾯试题⽬】Java集合相关的⾯试题-List、Map、Set等⼀、List

1、subList

不会返回新的list对象--与String的subString不同

返回原来list的从[fromIndex,toIndex)之间这⼀部分的视图,实际上,返回的list是靠原来的list⽀持的。

对原来的list和返回的list做的“⾮结构性修改”(non-structuralchanges),都会影响到彼此。

补充:如何删除List某个区间的数据

list.subList(from,to).clear();--将元素释放并清空内部属性

2、链表与顺序表

增删时哪个快慢由元素位置决定

3、List实现RandomAccess接⼝

表⽰⽀持快速随机访问

并根据是否实现此接⼝,决定采⽤序列⼆分查找(for循环遍历)还是迭代器⼆分查找

indexedBinarySerach/iteratorBinarySerach

ArrayList中for循环遍历⽐迭代器遍历快

4、ArrayList的扩容

(1)使⽤add时⾸先调⽤ensureCapacityInternal⽅法,传⼊size+1进去,检查是否需要扩充elementData数组的⼤⼩;

(2)newCapacity=扩充数组为原来的1.5倍

(3)使⽤grow⽅法扩容

(4)使⽤System.arraycopy将原数组复制到copy数组中

5、Array和ArrayList

存储类型

是否指定⼤⼩

⼆、Map

1、HashMap底层

Jdk1.7:数组+链表【头插法】

Jdk1.8:数组+链表【尾插法,减少线程安全】/红⿊树(链表8个元素&数组长度>=64,以提⾼搜索效率)

集合(list、set、map)

集合(list、set、map)

集合(list 、set 、map )

集合

1、集合和数组的区别

(1)长度:

集合长度可变,数组长度固定。

(2)存储的元素类型:

集合中存储的只能是引⽤数据类型,数组可以是基本数据类型和引⽤数据类型(类、接⼝类型、数组类型、枚举类型、注解类型,字符串型),但是只能存储⼀种类型的数据。集合在没有指定泛型之前,默认保存的是任意类型的元素(Object 类型),指定泛型之后可以保存对应类型的元素

数组存储引⽤类型的数据较为繁琐,使⽤集合更简洁

数组⽐较适合保存基本类型的元素,集合⽐较适合保存引⽤类型的元素

2、集合的体系

(1

)集合的体系

List 接⼝与Set 接⼝的不同:

List 可以存储相同的元素,Set 不能存储相同的元素。

Set 元素⽆序,List 有序

java 的集合分为collection 接⼝(单列集合)和Map (双列集合)两种体系,list 和set 是继承⾃collection 的接⼝,map 是⼀个独⽴的接⼝

list 接⼝和set 接⼝都有⾃⼰的实现类,因为接⼝是没有具体实现的,接⼝是⼀个规范,实现类在规范的基础上有⾃⼰的特性。在接⼝的实现上可以体现出⾯向对象编程的多态的特性。

(2)Collection 和 Collections 的区别

Collections 是个java.util 下的类,它包含有各种有关集合操作的静态⽅法

排序:

求最⼤值:

public static void main(String[] args) {

List <Integer> list=new ArrayList<>();

map、set、list、queue、stack的特点与用法

map、set、list、queue、stack的特点与用法

map、set、list、queue、stack的特点与用法Map、Set、List、Queue、Stack是常见的数据结构,它们在不同的场景下有着不同的特点和用法。

1. Map

Map是一种键值对的数据结构,它可以将一个键映射到一个值。Map中的键是唯一的,而值可以重复。Map可以用来存储和查找数据,它的查找速度非常快。

Map的常见用法包括:

(1)存储数据:Map可以用来存储数据,例如将学生的学号映射到学生的姓名。

(2)查找数据:Map可以用来查找数据,例如根据学生的学号查找学生的姓名。

(3)去重:Map可以用来去重,例如统计一篇文章中不同单词的个数。

2. Set

Set是一种不允许重复元素的集合,它可以用来存储和查找数据。Set中的元素是唯一的,而且没有顺序。

Set的常见用法包括:

(1)去重:Set可以用来去重,例如统计一篇文章中不同单词的个数。

(2)判断元素是否存在:Set可以用来判断一个元素是否存在于集合中。

(3)求交集、并集、差集:Set可以用来求两个集合的交集、并集、差集。

3. List

List是一种有序的集合,它可以存储重复元素。List中的元素可以根据下标进行访问,可以在任意位置插入或删除元素。

List的常见用法包括:

(1)存储数据:List可以用来存储数据,例如存储一组数字。

(2)访问元素:List中的元素可以根据下标进行访问。

(3)插入和删除元素:List可以在任意位置插入或删除元素。

4. Queue

Queue是一种先进先出(FIFO)的数据结构,它可以用来存储和处理一系列任务。Queue中的元素可以在队列的末尾添加,从队列的头部删除。

java集合使用场景

java集合使用场景

java集合使用场景

Java集合是Java编程中常用的数据结构,它提供了一组方法和类来处理和存储数据。Java集合框架主要包括List、Set、Map、Queue等接口和它们的实现类,每个类都有其自身的使用场景。下面将介绍一些常见的Java集合使用场景。

1. List集合:List是有序、可重复的集合。常用的List实现类有ArrayList和LinkedList。使用场景包括但不限于:

- 当需要按照特定顺序存储多个元素,并且需要能够随机访问元素时,可以使用ArrayList。

- 当需要频繁执行插入、删除操作,而不是随机访问元素时,可以使用LinkedList。

2. Set集合:Set是无序、不可重复的集合。常用的Set实现类有HashSet和TreeSet。使用场景包括但不限于:

- 当需要存储一组唯一的元素,并且不关心元素的顺序时,可以使用HashSet。

- 当需要按照一定顺序存储元素,并且不希望有重复元素时,可以使用TreeSet。

3. Map集合:Map是存储键值对的集合,每个键对应一个唯一的值。常用的Map实现类有HashMap和TreeMap。使用场景包括但不限于:

- 当需要根据键快速查找对应的值时,可以使用HashMap。- 当需要按照键的顺序存储键值对时,可以使用TreeMap。

4. Queue集合:Queue是一种特殊的集合,它遵循先进先出

(FIFO)的原则。常用的Queue实现类有LinkedList和ArrayDeque。使用场景包括但不限于:

- 当需要按照先后顺序处理元素,并且从队列的一端插入、另

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

TreeSet : TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。

Set 的用法:

存放的是对象的引用,没有重复对象

Set set=new HashSet();

String s1=new String("hello");

String s2=s1;

String s3=new String("world");

set.add(s1);

set.add(s2);

set.add(s3);

System.out.println(set.size());//打印集合中对象的数目为 2。

Set 的 add()方法是如何判断对象是否已经存放在集合中?

boolean isExists=false;

Iterator iterator=set.iterator();

while(it.hasNext()) {

String oldStr=it.next();

if(newStr.equals(oldStr)){

isExists=true;

}

}

List(列表):

List的特征是其元素以线性方式存储,集合中可以存放重复对象。

List接口主要实现类包括:

ArrayList() : 代表长度可以改变得数组。可以对元素进行随机的访问,向ArrayList()中插入与与删除元素的速度慢。

LinkedList(): 在实现中采用链表数据结构。插入和删除速度快,访问速度慢。

对于List的随机访问来说,就是只随机来检索位于特定位置的元素。

List 的 get(int index) 方法放回集合中由参数index指定的索引位置的对象,下标从“0” 开始。

最基本的两种检索集合中的所有对象的方法:

1: 用for循环和get()方法:

for(int i=0; i

System.out.println(list.get(i));

}

2: 使用迭代器(Iterator):

Iterator it=list.iterator();

while(it.hashNext){

System.out.println(it.next);

}

Map(映射):

Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。

Map没有继承于Collection接口

从Map集合中检索元素时,只要给出键对象,就会返回对应的值对象。

Map 的常用方法:

1 添加,删除操作:

Object put(Object key, Object value): 向集合中加入元素

Object remove(Object key): 删除与KEY相关的元素

void putAll(Map t): 将来自特定映像的所有元素添加给该映像

void clear(): 从映像中删除所有映射

boolean containsKey(Object key): 判断映像中是否存在关键字key

boolean containsValue(Object value): 判断映像中是否存在值value int size(): 返回当前映像中映射的数量

boolean isEmpty() :判断映像中是否有任何映射

2 查询操作:

Object get(Object key): 获得与关键字key相关的值

Map集合中的键对象不允许重复,也就说,任意两个键对象通过equals()方法比较的结果都是false.

但是可以将任意多个键独享映射到同一个值对象上。

总结:

List按对象进入的顺序保存对象,不做排序或编辑操作。Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List)。Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet或者LinkedHashMap.

List的功能方法

实际上有两种List: 一种是基本的ArrayList,其优点在于随机访问元素,另一种是更强大的LinkedList,它并不是为快速随机访问设计的,而是具有一套更通用的方法。

List : 次序是List最重要的特点:它保证维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(这只推荐LinkedList使用。)一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和移除元素。

相关文档
最新文档