美文网首页
java 集合概述

java 集合概述

作者: 赌书只道是寻常 | 来源:发表于2017-06-01 16:21 被阅读0次

一、集合概述

Java是一种面向对象语言,如果我们要针对多个对象进行操作,就必须对多个对象进行存储。而数组长度固定,不能满足变化的要求。所以,java提供了集合。

特点

1.        长度可以发生改变

2.        只能存储对象

3.        可以存储多种类型对象

与数组区别

数组

集合

长度

固定

可变

存储元素

基本类型/引用类型

引用类型

元素类型的一致性

必须一致

可以不一致

二、集合体系

集合作为一个容器,可以存储多个元素,但是由于数据结构的不同,java提供了多种集合类。将集合类中共性的功能,不断向上抽取,最终形成了集合体系结构。

数据结构:数据存储的方式

Java中集合类的关系图

集合体系导图(用鼠标拖动图片可看大图或右击图片选择在新标签页中打开图片(I))

三、Collection

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行,于是衍生出两个子类接口List和Set。

Collection基本功能

A:添加功能

boolean add(Object obj):向集合中添加一个元素

boolean addAll(Collection c):向集合中添加一个集合的元素。

B:删除功能

void clear():删除集合中的所有元素。

boolean remove(Object obj):从集合中删除指定的元素

boolean removeAll(Collection c):从集合中删除一个指定的集合元素。

C:判断功能

boolean isEmpty():判断集合是否为空。

boolean contains(Object obj):判断集合中是否存在指定的元素。

boolean containsAll(Collection c):判断集合中是否存在指定的一个集合中的元素。

D:遍历功能

Iterator iterator():就是用来获取集合中每一个元素。

E:长度功能

int size():获取集合中的元素个数

F:交集功能

boolean retainAll(Collection c):判断两个集合中是否有相同的元素。???

G:把集合转换成数组

Object[] toArray():把集合变成数组。

List接口

List接口下的集合元素存储有序,可以重复。

List的特有功能

A:添加功能

void add(int index, Object obj):在指定位置添加元素

B:删除功能

Object remove(int index):根据指定索引删除元素,并把删除的元素返回。

C:修改功能

Object set(int index, Object obj):把指定索引位置的元素修改为指定的值,返回修改前的值。

D:获取功能

int indexOf(Object o):返回指定元素在集合中第一次出现的索引

Object get(int index):获取指定位置的元素

ListIterator listIterator():列表迭代器

E:截取功能

List subList(int fromIndex, int toIndex):截取集合。

Set 接口

Set接口下的元素无序,不可以重复。其下面分为HashSet和TreeSet。

HashSet

底层数据结构是哈希表,线程不安全,效率高。

保证唯一性依赖两个方法:hashCode()和equals()。

顺序:

判断hashCode()值是否相同。

相同:继续走equals(),看返回值

如果true:就不添加到集合。

如果false:就添加到集合。

不同:就添加到集合。

TreeSet

底层数据结构是二叉树,线程不安全,效率高。

保证元素唯一性的方法时根据返回值是否是0。

保证排序的两种方式:

自然排序(元素具备比较性):实现Comparable接口

比较器排序(集合具备比较性):实现Comparator接口

四.迭代器的使用

使用步骤:

1、通过集合对象获取迭代器对象。

2、通过迭代器对象判断。

3、通过迭代器对象获取。

迭代器原理

由于多种集合的数据结构不同,所以存储方式不同,所以,取出方式也不同。

这个时候,我们就把判断和获取功能定义在了一个接口中,将来,遍历哪种集合的时候,只要该集合内部实现这个接口即可。

迭代器源码

[java]view plaincopy

publicinterfaceIterator

{

publicabstractbooleanhasNext();

publicabstractObject next();

}

publicinterfaceCollection

{

publicabstractIterator iterator();

}

publicinterfaceListextendsCollection

{

...

}

publicclassArrayListimplementsList

{

publicIterator iterator()

{

returnnew Itr();

}

privateclassItrimplementsIterator

{

publicboolean hasNext(){...}

publicObject next(){...}

}

}

Collection存储字符串和自定义对象并通过迭代器遍历

1、存储字符串

[java]view plaincopy

Collection c =newArrayList();

c.add("hello");

c.add("world");

c.add("java");

Iterator it = c.iterator();

while(it.hasNext())

{

String s = (String)it.next();

System.out.println(s);

}

2、存储自定义对象(Student类的代码省略)

[java]view plaincopy

Collection c=newArrayList();

Student s1=newStudent("林青霞",26);

c.add("s1");

Iterator it=c.iterator();

while(it.hasNext())

{

String s=(String)it.next();

System.out.println(s);

}

ListIterator迭代器是Iterator的子接口

所以List的遍历方式共有三种

1、Iterator迭代器

2、ListIterator迭代器

3、普通for+get()

五.Map

map是一个键值对形式的集合。它的元素都是有键和值组成。Map的键(key)是唯一的,值(value)可以重复。

Map的功能:

A:添加功能

V put(K key ,V value) :当key在集合中不存在是,添加元素;当key存在时替换元素

B:判断功能

boolean containsKey (Object key) :判断指定的键是否在集合中存在

Boolean containsValue(Object value):判断指定的值是否在集合中存在

Boolean isEmpty() :判断集合是否为空

C:删除功能

Void clear():清除所有键值对数据

D:获取功能

Object get (Object key) :根据键获取值

Set keyset(): 所有键的集合

Collectionvalues() :所有值的集合

E:长度功能

Int size()

Map包括HashMap、HashTable和TreeMap。其中,HashTable已基本被HashMap取代,这里不做讨论。

(注:HashMap支持null , HashTable不支持null )

Map遍历的两种方式:(导图上面已有,这里直接上代码了)

键找值:

[java]view plaincopy

publicstaticvoidmain(String[] args) {

Map map =newHashMap();

map.put("二阳",23);

map.put("二峥",24);

map.put("二光",25);

Set keys=map.keySet();//把键其中起来,存入到set集合中.

for(String key:keys){//遍历键集合,获取每一个键。增强for

Integer value=map.get(key);//让键去找值 get(Object key)

System.out.println(key+"***"+value);

}

}

键值对:

[java]view plaincopy

publicstaticvoidmain(String[] args) {

Map map =newHashMap();

map.put("二阳",23);

map.put("二峥",24);

map.put("二光",25);

Set> set=map.entrySet();//获取键值对集合。Set<> entrySet()

for(Map.Entry me:set){//遍历键值对集合,获取到每一个键值对。增强for,迭代器

String key=me.getKey();//通过键值对获取键getKey()

Integer value=me.getValue();//通过键值对获取值getValue()

System.out.println(key+"***"+value);

}

}

相关文章

  • JavaSE集合类

    JavaSE集合类 概述 Java中集合类概述Java中数组与集合的比较Java中集合框架层次结构 Collect...

  • Java集合

    1、java 集合概述 Set :无序、不可重复的集合。 List : 有序、重复的集合。 Queue:Java ...

  • 集合系列(一):集合框架概述

    集合系列(一):集合框架概述 Java 集合是 Java API 用得最频繁的一类,掌握 Java 集合的原理以及...

  • Chapter 6 . 集合

    阅读原文 Chapter 6 . 集合 6.1 Java 集合概述 l. Java 集合可分为 Collecti...

  • Java基础知识点(九)

    一、Java 中的集合框架(上) 1、Java 中的集合框架概述 JAVA集合框架体系结构:Collection与...

  • 集合(二)~Set

    一、Set集合概述和特点 1. Set集合概述和特点 java.util.Set 接口和 java.util.Li...

  • Java集合总结

    Java集合总结 概述 Java集合类主要由两个接口派生而出: Collection Map 这两个是Java集合...

  • Java集合概述

    一、基本概念 java集合的基本用途是保存对象,可以分为两个不同的概念:Collection和Map。 1、Col...

  • java集合概述

    为了让大家对集合有个基本的框架感,所以先上一张集合的思维导图: java里集合有两个,一个是Collection接...

  • java 集合概述

    一、集合概述 Java是一种面向对象语言,如果我们要针对多个对象进行操作,就必须对多个对象进行存储。而数组长度固定...

网友评论

      本文标题:java 集合概述

      本文链接:https://www.haomeiwen.com/subject/vosefxtx.html