怎样对Java集合元素求长度_java 集合概述

一、集合概述

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

特点

1.        长度可以发生改变

2.        只能存储对象

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

与数组区别

数组

集合

长度

固定

可变

存储元素

基本类型/引用类型

引用类型

元素类型的一致性

必须一致

可以不一致

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

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

Java中集合类的关系图

5a286f960c50

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

5a286f960c50

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

5a286f960c50

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接口下的集合元素存储有序,可以重复。

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接口下的元素无序,不可以重复。其下面分为HashSet和TreeSet。

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

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

顺序:

判断hashCode()值是否相同。

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

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

如果false:就添加到集合。

不同:就添加到集合。

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

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

保证排序的两种方式:

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

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

四.迭代器的使用

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

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

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

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

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

publicinterfaceIterator

{

publicabstractbooleanhasNext();

publicabstractObject next();

}

publicinterfaceCollection

{

publicabstractIterator iterator();

}

publicinterfaceListextendsCollection

{

...

}

publicclassArrayListimplementsList

{

publicIterator iterator()

{

returnnew Itr();

}

privateclassItrimplementsIterator

{

publicboolean hasNext(){...}

publicObject next(){...}

}

}

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

}

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

}

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

1、Iterator迭代器

2、ListIterator迭代器

3、普通for+get()

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

5a286f960c50

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

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

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

}

}

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

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值