Collection中List和Set、Map学习
2015-10-14 15:33
211 查看
一、Collection与Collections的区别
Java集合框架是Java语言的重要组成部分,它包含了系统而完整的集合层次体系,封装了大量的数据结构的实现。深刻理解Java集合框架的组成结构及其中的实现类和算法,能极大提高程序员编码的能力。本章讲述Java集合框架,主要包括集合框架的概念、集合框架接口,以及列表、集合、映射三种结构还有迭代方法、比较方法和较早以前版本的类和接口。下面就让我们一起来学习这些内容。集合有时又称为容器,简单地说,它是一个对象,能将具有相同性质的多个元素汇聚成一个整体。集合被用于存储、获取、操纵和传输聚合的数据。Java集合框架提供了有效的数据结构和算法,因此程序员不需要自己编写代码实现这些功能。而且结合框架对各个接口的实现是可以互换的,因此很容易转换接口。这样就提高了软件的复用性。
注意事项:
(1)Collection是集合类的一个顶级接口,其直接继承接口有List与Set
(2)Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。
二、List、Set、Map三大集合区别与说明
Java平台提供了一个全新的集合框架。集合框架的核心接口为Collection、List(列表)、Set(集合)和Map(映射)。
图1 集合关系图
从图1中可以看到,Collection是集合继承树中最顶层的接口,几乎所有的Java集合框架成员都继承实现了Collection接口,或者与其有密切关系。Collection提供了关于集合的通用操作。Set接口和List接口都继承了Collection接口,而Map接口没有继承Collection接口。因此,Set对象和List对象都可以调用Collection接口的方法,而Map对象则不可以。
下面我们对这三种类型接口的结构加以说明:Set有点类似数学中集合的定义,是无序的、没有重复项目的集合。List是位置性集合,加进清单的元素可以加在清单中特定位置或加到末尾,可以保存重复的元素。Map用于关键字/数值对,其中关键字是数值的惟一标识(不可重复),用户可以按关键字存取数据,数据可重复。具体形式如图2所示:
图2 各集合元素存放示例
(1)Collection:集合层次中的根接口,JDK 没有提供这个接口直接的实现类。
(2)Set:不能包含重复的元素。
(3) List:是一个有序的集合,可以包含重复的元素。提供了按索引访问的方式。
(4)Map:包含了 key-value 对。Map 不能包含重复的 key。
ArrayList使用范例
package com.lilin.collection;
import java.util.ArrayList;
import java.util.Iterator;
/**
* ArrayList使用
*
* @author lilin 2015年10月14日下午2:57:53
* @since JDK 1.6
*/
public class CollectionTest {
public static void main(String[] args) {
ArrayList<String> myList = new ArrayList<String>();
myList.add("李林");
myList.add("B");
myList.add("RockLi");
myList.add("D");
myList.set(0, "A");//在索引位置0上代替为李林
// 遍历ArrayList方法一
Iterator<String> iterator = myList.iterator();
System.out.println("遍历ArrayList方法1");
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
// 遍历ArrayList方法二
System.out.println("遍历ArrayList方法2");
for (Object string : myList) {
System.out.println(string);
}
// 遍历ArrayList方法三
System.out.println("遍历ArrayList方法3");
for (int i = 0; i < myList.size(); i++) {
System.out.println(myList.get(i));
}
// 删除元素
myList.remove("RockLi");
System.out.println("删除元素后的ArrayList");
Iterator<String> iterator2 = myList.iterator();
System.out.println("删除后遍历ArrayList");
while (iterator2.hasNext()) {
String string = iterator2.next();
//条件判断,把含有元素"D"的元素删除
if (string.equals("D")) {
iterator2.remove();
} else {
System.out.println(string);
}
}
}
}
输出结果:
遍历ArrayList方法1
A
B
RockLi
D
遍历ArrayList方法2
A
B
RockLi
D
遍历ArrayList方法3
A
B
RockLi
D
删除元素后的ArrayList
删除后遍历ArrayList
A
B
相关文章推荐
- Oracle学习(六)之 表查询
- 指针数组和数组指针
- 《深入理解Linux网络技术内幕》阅读笔记(二十九)
- bochs创建主引导代码
- 如何让猎头找到你
- qmqdecode.sh
- 转-Mac下Apache Tomcat安装配置
- 用PHP的socket实现客户端到服务端的通信
- OOAD之设计模式-创建模式
- mysql命令行自动补全工具 mycli
- ionic中的关于下拉刷新
- Ubuntu下设置mysql自动定时备份
- android-自定义View初步探索
- encodeURIComponent编码后java后台的解码
- 【Android学习笔记】 蓝牙Bluetooth
- 创建自己的yum 仓库
- Android长按事件和点击事件问题处理,OnItemLongClickListener和OnItemClickListener冲突问题
- Struts2拦截器token防止重复提交
- HDU2028 Lowest Common Multiple Plus
- HDU2028 Lowest Common Multiple Plus