集合(容器)
来源:互联网 发布:bluegriffon mac 编辑:程序博客网 时间:2024/06/15 20:43
JAVA中的集合主要是用来干嘛的呢?在JAVA语言中,为了方便对多个对象的操作,我们就需要一些能够存储这些对象的东西,虽然数组Array可以实现这个功能,但是它是有一定的弊端的。这时候就要用到JAVA集合了,JAVA集合就像一种容器,能够动态的将对象存入容器中。
先说说数组,虽然数组也可以用来存储对象,但是它是有它的弊端的
①数组一旦被创建后,它的长度是不可变得,就像这样 Object[] P = new Object(10) 之后是不能够改变它的长度的
②数组中实际的元素个数是不可知的,所以会导致一些空间的浪费。
为了避免上面的两个问题,我们就需要用到集合来解决了,JAVA的集合分为Collection接口和Map接口两种体系,首先Collection接口中包含两类,一是set,二是list,其中set的特点主要是其中的数据是无序的,不可重复的(有点类似于数学中的集合),list的特点是有序的,并且是可重复的,所以list可以叫做动态数组(平时用的数组是静态的)。而对于Map接口,它其实是一个有着映射关系的集合(就像数学中的函数一样),在它之中的任意一个元素,总能找到一个元素与之对应。
下面来说说关于集合中的Collection接口,在Collection接口中包含了一些方法,如下:
1:size() 它可以返回集合的元素个数
2:add(Object e) 它可以向集合中添加任意元素
3:addAll(Collection e) 它可以将e集合中的所有元素都添加到当前集合中去
4:clear() 看名字就知道,它可以清空集合
5;isEmpty() 它可以判断一个集合是否为空 其返回值是boolean类型的
上面五个的实现方式如下:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import org.junit.Test;
public class CollectionTest {
@Test
public void testCollection1(){
//1:size():返回集合中的元素个数
Collection A = new ArrayList();
System. out.println(A .size());
//2:add(Object e):向集合中添加一个元素
A.add(12);
System. out.println(A .size());
//3:addAll(Collection obj):将集合obj中的所有元素都添加到集合中去
Collection obj = new ArrayList();
obj.add(new Date());
obj.add("AA");
A.addAll(obj);
System. out.println(A .size());
System. out.println(A );//打印集合中的元素
//4:clear():清空集合中的元素
A.clear();
System. out.println(A .size());
//5:isEmpty():判断集合是否为空
System. out.println(A .isEmpty());
}
}//输出结果如下
0
1
3
[12, Wed May 17 14:01:38 GMT+08:00 2017, AA]
0
true
6:contains(Object e) 判断当前集合中是否有元素e
7:containsAll(Collection e) 判断当前集合中是否包含了集合e中的所有元素
8:retainAll(Collection e) 求当前集合与e的共有元素 并将其返回给当前集合
9:remove(Object e) 将元素e从当前集合中除去 成功返回true 失败返回false
10:removeAll(Collection e) 将当前集合中与集合e共有的元素删除 成功返回true 失败返回false
上五个的具体实现如下:
@Test
public void testCollection2(){
//6:contains(Object e):判断e是否存在于当前集合中
Collection A = new ArrayList();
Collection C = new ArrayList();
A.add("BB" );
A.add("AA" );
A.add(123);
C.addAll(A);
System. out.println(A .contains("BB")); //true
//7:containsAll(Collection e):判断当前集合是否包含了集合e的所有元素 存在返回true 反之返回false
Collection B = new ArrayList();
B.add("BB" );
B.add("AA" );
System. out.println(A .containsAll(B)); //true
//8:retainAll(Collection e):求e与当前集合的共有元素并返回给当前集合,成功返回true反之返回false
A.retainAll(B );
System. out.println(A );//[BB,AA]
//9:remove(Object e):删除当前集合中的元素e,若成功,返回true,反之返回false
System. out.println(A .remove("BB" ));//true
//10:removeAll(Collection e):删除当前集合中与e所共有的元素,成功返回true,反之返回false
C.removeAll(B );
System. out.println(C );//[123]
}
}
11:equals(Object e) 判断两个集合是否完全相同
12:toArray() 将集合e转换为数组
13:hashcode():生成当前集合的哈希码
14:iterator() 返回一个Iterator(迭代器)类型的对象 从而可以实现当前集合的遍历!同时配合着Iterator中的hasNext()方法与next()方法使用可以做到遍历集合的目的 hasNext() 是一个返回值为boolean类型的方法,它可以用来判断集合从第一个元素开始是否存在下一个元素 而next()是返回集合的下一个元素。
以上四个方法的用法如下:
@Test
public void testCollection3(){
Collection A = new ArrayList();
Collection C = new ArrayList();
A.add("BB" );
A.add("AA" );
A.add(123);
C.addAll(A);
//11:equals() 判断两个集合是否完全相同
System. out.println(A .equals(C ));//true
//12:hashCode()
System. out.println(A .hashCode());//2124026
//13:toArray() 将当前集合转换为数组
A.toArray();
//14:iterator() 返回一个Iterator类型的对象,从而可以实现集合的遍历
//集合的遍历方法可以配合hasNext()方法与next()方法使用
Iterator Obj = C.iterator();
while(Obj .hasNext())
{
System. out.println(Obj .next());//BB AA 123
}
}
在这里重点是iterator()这个方法,它返回了一个Iterator(迭代器)类型的对象,在Iterator类型中有两个方法 分别是hasNext()与next() 那么hasNext()方法相当于一个指针 先判断集合的第一个元素是否存在 ,若存在,则指针指向第一个元素,然后依次进行后面元素的判断,若不存在则返回false。对于next()方法,它和hasNext()的判断方式一样,只不过它是返回存在的那个元素。一般来说,这两个方法是配合一起使用的 ,就像上面例子中的一样,其中的C集合的遍历就是利用了迭代器的遍历方法;其实我们还可以用增强for循环来遍历一个集合,具体的实现方法如下:
for(Object each :C )
{
System. out.println(each );
}
对上面这个例子来说" : "后为需要被遍历的集合,而" : "后的变量为一个局部变量,它是用来存从集合C中遍历出的元素的(相当于对数组进行遍历时的S = A[1]),所以这个局部变量的类型一般声明为Object类型;如果在上面的for循环中加入了一条语句如下:
for(Object each :C )
{
each = "帅哥";
System. out.println(each );
}
那么上面这个例子的输出就都为"帅哥"了,但是这里一定要注意集合C中所有元素的值还是没有发生改变的,相当于这里你只是改变了each所存的内容。那么增强for循环结束条件就是直到集合中的所有元素都被遍历了一遍。
阅读全文
0 0
- (五)容器-集合
- 集合(容器)
- java集合类(容器)
- Java 集合类(容器)
- 集合(容器)hoshCode算法
- 容器|集合
- 对象容器、对象数组、集合容器(输出改进)
- Java基础之容器(集合)
- java常用容器(集合)的总结
- Java的集合容器(上)
- Java的集合容器(下)
- Java基础知识之集合(容器)简介
- Java 容器类(集合类)
- 常见的集合类容器(java)
- 51Nod1557 两个集合(set容器)
- java笔记(六):集合,容器
- 浅析java中的集合类(容器)
- 集合 (一个容器) 存储数据
- springMVC拦截器处理订单重复提交
- nginx处理静态资源的配置
- 微调网络
- sql多对多查询统计,一个主题多个关键字,一个关键字多个文章,一个文章多个关键字
- Linux 之 SSH免密登陆之三 单机脚本的编写
- 集合(容器)
- C语言条件编译
- 通过build.xml在Eclipse中导入工程
- MySQL触发器
- ubuntu终止进程
- 简短代码实现原生定位
- LLVM(clang)介绍
- Spring实战4之DI(依赖注入)
- 操作系统第二章 进程管理