引言
在看ssh视频的时候涉及到了map、list和set。现在来总结一下它们三个。
首先我们来介绍一下Collection接口。
Collection接口
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个 Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。
如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
Iterator it = collection.iterator(); // 获得一个迭代子
while(it.hasNext()) {
Object obj = it.next(); // 得到下一个元素
}
由Collection接口派生的两个接口是List和Set。
List接口
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。
set接口
Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。
很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。
实例
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
//import java.util.Iterator<String>;
public class ListAndSetTest {
/**
* @param args
*/
String string[]={"i","am","xing","yu"};
public void listtest(){
List<String> list=new ArrayList<String>();
for(String s:string){
list.add(s);
}
for(int i=0;i<list.size();i++)
{
System.out.println("list的结果是:"+list.get(i));
}
}
public void settest(){
Set<String> set=new HashSet<String>();
for(String s:string){
set.add(s);
}
Iterator iterator=(Iterator) set.iterator();
while(iterator.hasNext()){
System.out.println("set的结果是:"+iterator.next());
}
}
public static void main(String[] args) {
new ListAndSetTest().listtest();
new ListAndSetTest().settest();
}
}
总结
list和set都是单列集合,他们有一个共同的父接口---collection。list是依次列出一个集合中的所有的元素,若集合中有重复的,同样列出,有序;set列出的集合中是不允许有重复的,也就是说里面有一个A对象和一个B对象,若是A.equals(B)==ture,那么用set方法列出的只会有一个,set集合默认是有序的,正向排序。
Map 接口
Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value。Map<key,value> 它是一个双列的集合。里面有一个key,和一个value,其中value是真正存储值得变量。Map存储的数据是无序的,其键(key)不能重复,但是其值(value)是可以重复的。
实例
package maptest;
import java.util.HashMap;
import java.util.Map;
public class maptest {
public static void main(String[] args) {
maptest();
}
public static void maptest(){
String string[]={"i","am","xing","yu"};
Map<Integer, String> map=new HashMap<Integer, String>();
for(String s:string){
map.put(s.length(), s);
System.out.println("map的输出结果是:"+map.get(s.length()));
}
}
<div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;">}</span></div>
总结