核心接口
Collection、List、Set和Map
List和Set继承了Collection
Map独成一体
特征
Collection存放的对象允许重复,没有顺序
List提供了对象的有序存放,其中存放的对象也允许重复
Set相当于数学中集合的概念,存放的对象不允许重复也没有顺序
访问集合元素
所有的集合类都实现了Iterator(迭代器)接口
方法:
方法名称 | 方法功能 |
---|---|
hasNext() | 在迭代器当前位置,是否还有下一个元素 |
next() | 返回下个元素 |
remove() | 删除迭代器最后返回的那个元素 |
List(列表)——有序可重复
List的具体实现类主要有ArrayList和LinkedList(适合在链表中频繁进行插入和删除对象操作)
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* Created by kevin_000 on 2016/3/15.
*/
public class TestList {
public static void main(String[] args) {
String str1="This";
String str2="is";
String str3="a";
String str4=str3;
List list=new ArrayList();
list.add(str1);
list.add(str2);
list.add(str3);
list.add(str4);
for(Iterator it=list.iterator();it.hasNext();){
String str= (String) it.next();
System.out.print(str+" ");
}
}
}
存放情况
this | is | a |
Set(集合)——无序不重复
Set的主要实现类有HashSet和TreeSet
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/**
* Created by kevin_000 on 2016/3/15.
*/
public class TestSet {
public static void main(String[] args) {
String str1 = "This";
String str2 = "is";
String str3 = "a";
String str4 = str3;
Set set = new HashSet();
set.add(str1);
set.add(str2);
set.add(str3);
set.add(str4);
System.out.println(set.size());// 输出3个
for (Iterator it=set.iterator();it.hasNext();){
String str= (String) it.next();
System.out.print(str);// 输出aThisis
}
}
}
存放情况
a | This |
Map(映射)——键值对
Map提供了“键—值”的方式来存放对象,其中键值都可以是对象。
Key不能重复
Value可以重复,多个Key映射到同一个Value对象上
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* Created by kevin_000 on 2016/3/15.
*/
public class TestMap {
public static void main(String[] args) {
Map map=new HashMap();
map.put("1","a");
map.put("2","a");
map.put("3","b");
for(Iterator it=map.keySet().iterator();it.hasNext();){
String key=(String) it.next();
String value=(String)map.get(key);
System.out.println(key+":"+value);
}
}
}
存放情况
key | value |
---|---|
1 | a |
2 | a |
3 | b |
Enum(枚举)——常量集合
枚举中也可以定义方法
如:
/**
* Created by kevin_000 on 2016/3/15.
*/
public class TestEnum {
public enum Coin {
penny(1), nickel(5), dime(10), quarter(25);
private final int value;
//构造方法,类似于类的定义
Coin(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
public static void main(String[] args) {
for (Coin coin : Coin.values()
) {
System.out.println(coin.name() + ":" + coin.getValue());
}
}
}
泛型
简化代码,无需转换类型,相当于C++中的模板类
import java.util.ArrayList;
import java.util.List;
/**
* Created by kevin_000 on 2016/3/15.
*/
public class TestTemplate {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();//定义了泛型List
list.add("Kevin");
list.add("Lee");
for (Object o : list
) {
System.out.println(o);
}
for (int i = 0; i < list.size(); i++) {
String str = list.get(i);//不用再强制转换类型
System.out.println(str);
}
}
}
增强for循环
用于数组或集合
for (type elementName : array | collection){
}
自动装箱和拆箱
本质是基本数据类型和包装类型的自动转换
包装类型 | 基本数据类型 |
---|---|
Boolean | boolean |
Character | char |
Byte | byte |
Short | short |
Integer | int |
例子:
/**
* Created by kevin_000 on 2016/3/16.
*/
public class TestBox {
public static void main(String[] args) {
Integer i = new Integer(2);
Integer j = 10;// 自动装箱,基本数据类型-->包装类型
int k = j + 1;// 自动拆箱,包装类型-->基本数据类型
System.out.println(j);
System.out.println(k);
}
}