Collection接口---单身狗集合
Map接口---夫妇集合(Key,Value)
Collection的子接口List接口(ArrayList实现类)和Queue接口存储的数据是排列有序,可以重复的,子接口set存储的数据是无序不能重复的。
List接口常用的实现类ArrayList,一般用泛型限制集合中add的元素类型,泛型要用引用类型,不能用基本类型,可以用基本类型的包装类。泛型集合可以添加泛型的子类的对象实例。
Set接口的常用实现类HashSet,循环set中的数据只能用foreach或者iterator方法,因为Set是无序的,不能用下标访问,只能遍历.
Set中,添加某个对象,无论添加多少次,最后只保留一个对象(其实是该对象的引用),并且保留的是第一次添加的(因为后续添加的是添加不进去的)
package per.test; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; public class TestCollection { public static void main(String[] args) { /**************************ArrayList遍历方法***********************************/ List<String> strs = new ArrayList<String>(); strs.add("1"); strs.add("2"); strs.add("3"); strs.add("4"); strs.add("5"); //用foreach的方式遍历ArrayList数据 for (String str:strs) {//也可写成for (int i=0;i<strs.size();i++) System.out.println(str); } //将链表形式数据转换成数组的形式,再用foreach循环 //String[] srtTmp= (String[]) strs.toArray();java.lang.ClassCastException: String[] srtTmp= new String[strs.size()]; strs.toArray(srtTmp); for (String string : srtTmp) {//也可写成for (int i=0;i<srtTmp.length;i++) System.out.println(string); } //用迭代器的方式遍历 --iterator Iterator<String> iterator = strs.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } /**************end*************/ /**************************Map遍历方法***********************************/ Map<String, String> map = new HashMap<String, String>(); map.put("1", "a"); map.put("2", "b"); map.put("3", "c"); map.put("4", "d"); //用foreach循环遍历,分别取key,value的值 for (String key:map.keySet()) { System.out.println("key="+key+" ,val="+map.get(key)); } //用迭代的方式遍历,先用map.entrySet拿到迭代器 //Map.Entry描述在一个Map中的一个元素(键/值对)。是一个Map的内部类。 Iterator<Map.Entry<String, String>> iterator2 = map.entrySet().iterator(); while (iterator2.hasNext()) { //System.out.println("key="+iterator2.next().getKey()+"val="+iterator2.next().getValue()); //出力错误:key=1val=b key=3val=d //原因:调用了两次iterator2.next(),每次调用next都会往下移动一个元素, //key=1然后往下移动一个,取value时就取得下一个的value //修改 Map.Entry<String, String> entry= iterator2.next(); System.out.println("key="+entry.getKey()+" ,val="+entry.getValue()); } //推荐的遍历方式,通过Map.entrySet遍历key和value for (Map.Entry<String, String> entry:map.entrySet()) { System.out.println("key="+entry.getKey()+" ,val="+entry.getValue()); } /**************end*************/ } }