java.util包
Collection接口、List接口、Set接口、Map接口(Iterator接口)
集合可以理解为用来在内存中存放一组对象的容器,java中有三种集合类:
(1)List 来自Collection接口,实现类有序可重复,集合中的每一个对象都有一个惟一的顺序位置,通过它们的下标表示出来,遍历的时候可以按照它们的下标顺序逐一访问。主要有ArrayList、LinkedList、Vector三种实现类。
(2)Set 来自Collection接口,实现类无序不可重复,也就是说集合中的对象无序且互异,可以通过迭代的方式进行遍历。主要有HashSet、TreeSet两种实现类。(往集合中添加元素时,如果有重复的元素会被覆盖掉)
(3)Map 实现类里存放键值对(映射)。一种对象称为key,一种称为value,其中key不能重复,但value能重复,由于存放的对象数量与上面两种不同,所以在选择使用Map时是很方便的,遍历Map时可以先用迭代器得到key,再通过key与value的对应得到value。主要有HashMap、HashTale、TreeMap三种实现类。(key不能重复,其实实质上和集合Set是一样的,添加元素(key)重复,也会覆盖)
附:数组与集合的区别:
数组用于存储统一类型的数据,有固定的长度;集合可以存储不同类型的数据,没有固定的大小。
Iterator接口实现类是获取集合中元素的过程,实际上帮助获取集合中的元素。也就是通过迭代实现遍历集合中的元素。
起有三种方法:hasNext() 如果仍有元素可以迭代,则返回 true。
next() 返回迭代的下一个元素。
remove() 从迭代器指向的集合中移除迭代器返回的最后一个元素(可选操作)。
下面举一个Map用迭代遍历的例子:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapTest {
public void testMap(){
//创建一个集合map
Map<Integer, String> map = new HashMap<Integer,String>();
map.put(1, "aaa");
map.put(2, "bbb");
map.put(3,"ccc");
map.put(2, "ddd");
System.out.println(map);
//获取key集合(Set)
Set<Integer> set = map.keySet();
Iterator<Integer> it = set.iterator();
while(it.hasNext()){
int key = it.next();
//通过key获取对应的value值
String value = map.get(key);
System.out.println("key="+key+" value="+value);
}
}
//主函数 实现程序
public static void main(String[] args) {
Test test = new Test();
test.testMap();
}
}
运行结果: {1=aaa, 2=ddd, 3=ccc}
key=1 value=aaa
key=2 value=ddd
key=3 value=ccc
实验小结: 由结果可看出,遍历Map可以用迭代先找出key的值,再通过key找出value的值;
输入的(2,"aaa")被(2,"ddd")覆盖掉了;
迭代遍历元素的方法。
Collection接口、List接口、Set接口、Map接口(Iterator接口)
集合可以理解为用来在内存中存放一组对象的容器,java中有三种集合类:
(1)List 来自Collection接口,实现类有序可重复,集合中的每一个对象都有一个惟一的顺序位置,通过它们的下标表示出来,遍历的时候可以按照它们的下标顺序逐一访问。主要有ArrayList、LinkedList、Vector三种实现类。
(2)Set 来自Collection接口,实现类无序不可重复,也就是说集合中的对象无序且互异,可以通过迭代的方式进行遍历。主要有HashSet、TreeSet两种实现类。(往集合中添加元素时,如果有重复的元素会被覆盖掉)
(3)Map 实现类里存放键值对(映射)。一种对象称为key,一种称为value,其中key不能重复,但value能重复,由于存放的对象数量与上面两种不同,所以在选择使用Map时是很方便的,遍历Map时可以先用迭代器得到key,再通过key与value的对应得到value。主要有HashMap、HashTale、TreeMap三种实现类。(key不能重复,其实实质上和集合Set是一样的,添加元素(key)重复,也会覆盖)
附:数组与集合的区别:
数组用于存储统一类型的数据,有固定的长度;集合可以存储不同类型的数据,没有固定的大小。
Iterator接口实现类是获取集合中元素的过程,实际上帮助获取集合中的元素。也就是通过迭代实现遍历集合中的元素。
起有三种方法:hasNext() 如果仍有元素可以迭代,则返回 true。
next() 返回迭代的下一个元素。
remove() 从迭代器指向的集合中移除迭代器返回的最后一个元素(可选操作)。
下面举一个Map用迭代遍历的例子:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapTest {
public void testMap(){
//创建一个集合map
Map<Integer, String> map = new HashMap<Integer,String>();
map.put(1, "aaa");
map.put(2, "bbb");
map.put(3,"ccc");
map.put(2, "ddd");
System.out.println(map);
//获取key集合(Set)
Set<Integer> set = map.keySet();
Iterator<Integer> it = set.iterator();
while(it.hasNext()){
int key = it.next();
//通过key获取对应的value值
String value = map.get(key);
System.out.println("key="+key+" value="+value);
}
}
//主函数 实现程序
public static void main(String[] args) {
Test test = new Test();
test.testMap();
}
}
运行结果: {1=aaa, 2=ddd, 3=ccc}
key=1 value=aaa
key=2 value=ddd
key=3 value=ccc
实验小结: 由结果可看出,遍历Map可以用迭代先找出key的值,再通过key找出value的值;
输入的(2,"aaa")被(2,"ddd")覆盖掉了;
迭代遍历元素的方法。