1、Collection接口
集合可以理解为一个动态的对象数组,两层含义:
1)、动态:集合中的对象可以任意扩充和删减;
2)、集合中可以存放任意对象。
集合的性能比数组高,而且更容易进行数据的扩展和修改。Collection的常用子接口:List、Set、Queue。
2、List接口
List集合可以存放任意对象,而且集合中对象可以重复。
List的常用实现类:ArrayList、Vector。
ArrayList与Vector的比较:
性能方面:ArrayList采用异步处理方式,性能高;Vector采用同步处理方式,性能低些;线性安全方面:ArrayList属于非线程安全;Vector属于线程安全。
【ArrayList实例】
<span style="font-size:14px;">import java.util.ArrayList;
import java.util.List;
public class ListDemo1 {
public static void main(String[] args) {
List<String> lists = null;
lists = new ArrayList<String>();
lists.add("Hello");
lists.add("World");
lists.add("Hello"); //允许List中对象重复
for(int i=0; i< lists.size(); i++){
System.out.println(lists.get(i));
}
System.out.println("删除操作后....");
lists.remove(2);
for (int i = 0; i < lists.size(); i++) {
System.out.println(lists.get(i));
}
if (lists.isEmpty()) {
System.out.println("集合为空...");
} else {
System.out.println("集合不为空...");
}
if (lists.contains("World")) {
System.out.println("集合中包含World");
System.out.println("World所在的位置为:" + lists.indexOf("World"));
} else {
System.out.println("集合中不包含World");
}
List<String> lists2 = new ArrayList<String>();
lists2.add("World");
lists2.add("Hello");
if (lists.equals(lists2)) { //List的比较与元素存入的顺序有关
System.out.println("lists 与 lists2 相等");
} else {
System.out.println("lists 与 lists2 不相等");
}
}
}</span>
【Vector实例】
<span style="font-size:14px;">import java.util.List;
import java.util.Vector;
public class VectorDemo1 {
public static void main(String[] args) {
List<String> lists = null;
lists = new Vector<String>();
lists.add("Hello");
lists.add("World");
for (int i = 0; i < lists.size(); i++) {
System.out.println(lists.get(i));
}
}
}</span>
3、Set接口
Set集合中不可以放入重复的元素。
Set集合会自动排序;Set常用的实现类:HashSet,TreeSet。
【HashSet实例】
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class SetDemo1 {
public static void main(String[] args) {
Set<String> sets = null;
sets = new HashSet<String>();
sets.add("D");
sets.add("A");
sets.add("C");
sets.add("B");
sets.add("E");
Iterator<String> its = sets.iterator();
while (its.hasNext()) { /*迭代输出*/
System.out.println(its.next());
}
Set<String> sets2 = null;
sets2 = new HashSet<String>();
sets2.add("E");
sets2.add("D");
sets2.add("A");
sets2.add("C");
sets2.add("B");
if (sets.equals(sets2)) { // Set的比较与存入元素顺序无关
System.out.println("sets 与 sets2 相等!");
}else {
System.out.println("sets 与 sets2 不相等!");
}
}
}
4、Iterator接口
Iterator是集合输出的标准操作。Iterator是集合专门的迭代输出接口,迭代输出就是将元素一个一个进行判断,判断其是否有内容,如果有内容则把内容取出。
具体实例,见上面的例子。
5、Map接口
Map以key/value的保存形式。
Map常用的实现类:HashMap,Hashtable。
不允许key重复。
【HashMap实例】
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapDemo1 {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String,String>();
map.put("key1", "hello");
map.put("key2", "world");
map.put("key3", "hi");
String s = map.get("key2"); //通过key,获取value;
System.out.println(s);
Set<String> sets = map.keySet(); //获取所有的key;
Iterator<String> itesKey = sets.iterator();
while(itesKey.hasNext()){
System.out.println(itesKey.next());
}
Collection<String> cols = map.values(); //获取所有的value;
Iterator<String> itesVal = cols.iterator();
while(itesVal.hasNext()){
System.out.println(itesVal.next());
}
if (map.containsKey("key1")) {
System.out.println("key存在");
}
if (map.containsValue("world")) {
System.out.println("value存在");
}
map.remove("key1"); //移除指定key
}
}