一、Collection接口
1.集合可以理解为一个动态的对象数组,不同的是集合中的对象内容可以任意扩充
2.集合的特点:
性能高
容易扩展和修改
3.Collection的常用子类
a).List接口
1).List接口可以存放任意的数据,而且在List接口中内容是可以重复的
2).List接口常用子类
ArrayList
Vector
3).常用操作
判断集合是否为空:boolean isEmpty()
查找指定的对象是否存在:int indexOf(Object o)
.
.
代码示例(ArrayList):
import java.util.ArrayList;
import java.util.List;
public class ListDemo01 {
public static void main(String[] args) {
List<String> lists = null;
lists = new ArrayList<String>();
lists.add("A");
lists.add("B");
lists.add("A"); // 1.可重复
for (int i = 0; i < lists.size(); i++) {
System.out.println(lists.get(i));
}
lists.remove(0);
System.out.println("删除之后------");
for (int i = 0; i < lists.size(); i++) {
System.out.println(lists.get(i));
}
System.out.println("集合为空:" + lists.isEmpty());
System.out.println("B是否存在(返回索引或-1):" + lists.indexOf("B"));
}
}
执行结果:
.
代码示例(Vector):
import java.util.List;
import java.util.Vector;
public class ListDemo02 {
public static void main(String[] args) {
List<String> lists = new Vector<String>();
lists.add("jike");
lists.add("xueyuan");
for (int i = 0; i < lists.size(); i++) {
System.out.println(lists.get(i));
}
}
}
执行结果:
4).ArrayList与Vector的区别
.
.
b).Set接口
1).Set接口中不能加入重复元素,但是可以排序
2).Set接口常用子类
散列存放:HashSet
有序存放:TreeSet
.
代码示例:
import java.util.Set;
import java.util.TreeSet;
public class SetDemo01 {
public static void main(String[] args) {
Set<String> s = null;
// s = new HashSet<String>();// 散列排放
// s.add("C");
// s.add("D");
// s.add("E");
// s.add("F");
// s.add("A");
// s.add("B");
// System.out.println(s);
s = new TreeSet<String>();// 有序排放的,即使存入时无序,输出还是有序
s.add("C");
s.add("F");
s.add("A");
s.add("B");
s.add("E");
s.add("D");
System.out.println(s);
}
}
.
.
c).Iterator接口
1).结合输出的标准操作:
标准做法,使用Iterator接口
2).操作原理:
Iterator是专门的迭代输出接口,迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容则把内容取出
3)Iterator对象通过集合来获得
4)其中的remove方法:
从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。每次调用 next 只能调用一次此方法。如果进行迭代时用调用此方法之外的其他方式修改了该迭代器所指向的 collection,则迭代器的行为是不确定的。
!!!!!!且不能通过集合来调用remove。如下图:
结果为:
示例代码:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorDemo01 {
public static void main(String[] args) {
List<String> lists = new ArrayList<String>();
lists.add("A");
lists.add("B");
lists.add("C");
lists.add("D");
lists.add("E");
lists.add("F");
Iterator<String> iter = lists.iterator();
while (iter.hasNext()) {
String str = iter.next();
if ("A".equals(str)) {
// 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
// 每次调用 next 只能调用一次此方法。
// 如果进行迭代时用调用此方法之外的其他方式修改了该迭代器所指向的 collection,
// 则迭代器的行为是不确定的。
iter.remove();
}
}
for (int i = 0; i < lists.size(); i++) {
System.out.println(lists.get(i));
}
}
}
运行结果:
.
.
.
二、Map接口
1.保存形式:
key——>value的方式保存 (key唯一)
2.常用子类:
HashMap:无序存放,key不允许重复
Hashtable:无序存放,key不允许重复
3.范例:
范例a、
import java.util.HashMap;
import java.util.Map;
public class MapDemo01 {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "jikexueyuan");
map.put("key2", "www");
map.put("key3", "com");
map.put("key4", "eoe");
map.put("key5", "eoeandroid");
map.put("key6", "hello");
String str = map.get("key1");
System.out.println(str);
}
}
输出:
.
范例b、
import java.util.HashMap;
import java.util.Map;
public class MapDemo02 {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "jikexueyuan");
map.put("key2", "www");
map.put("key3", "com");
map.put("key4", "eoe");
map.put("key5", "eoeandroid");
map.put("key6", "hello");
if (map.containsKey("key1")) {
System.out.println("key存在");
} else {
System.out.println("key不存在");
}
if (map.containsValue("jikexueyuan1")) {
System.out.println("value存在");
} else {
System.out.println("value不存在");
}
}
}
结果:
.
范例c、
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapDemo02 {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "jikexueyuan");
map.put("key2", "www");
map.put("key3", "com");
map.put("key4", "eoe");
map.put("key5", "eoeandroid");
map.put("key6", "hello");
Set<String> s = map.keySet();
Iterator<String> i = s.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
}
}
结果:
(输出无序)
.
.
范例d、
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class MapDemo02 {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "jikexueyuan");
map.put("key2", "www");
map.put("key3", "com");
map.put("key4", "eoe");
map.put("key5", "eoeandroid");
map.put("key6", "hello");
Collection<String> c = map.values();
Iterator<String> i = c.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
}
}
结果:
(输出无序!)