java 的集合框架
java 中的集合分为 Collection 和 Map 两种接口,Collection是单列集合,Map是双列集合。
Collection单列集合:继承了Iterator接口所以具有了iterator()方法 ,该方法返回一个Iterator,这个接口具有 hasNext (),next(),remove() 3个方法可以在实现类里完成实现。
Collection 有两个子接口 set 和 list。
set:储存唯一,不要求有序的对象;
set存储的是元素的引用,如两个元素的引用相等,或者其值相等,hash值也相等,则set只保存一个,同理set集合中只有一个null;
list:存储不唯一,但有序的对象
list的两个实现类:
ArrayList:与数组相同的存储方式,但是存储集合的大小可变,比数组更灵活。
LinkedList:链式储存,集合的每一项都储存了下一项的引用,更利于元素的新增和删除操作。
ArrayList 查询和修改快,LinkedList新增和删除快。
其实在ArrayList之前还有一个 Vector 集合类,它与ArrayList基本相同,最大的区别就是Vector是线程安全的,而ArrayList是线程不安全的。
ArrayList 线程不安全,而速度快,Vector 线程安全,但速度慢。
Map:双列集合,集合中的每一项都是成对的key、value。
Map接口并不继承Iterable接口或实现该接口所以不能直接进行遍历
key:有唯一,不要求有序
value:不唯一,不要求有序
Map集合遍历的三种方法:
public static void main(String[] args) {
Map<String,String> map=new HashMap<String,String>();
map.put("CN", "中华人民共和国");
map.put("UK","联合国");
//方法1 双列集合无法遍历了?那就通过方法把他转成单列 ! 用集合名.entryset方法 得到Set<Entry<String, String>>的返回值
for (Entry item : map.entrySet()) {
System.out.println(String.format("key的值是%s\tvalue的值是%s",item.getKey(),item.getValue()));
}
//方法2 通过得到key键的集合,然后通过Map的方法map.get(key)用key得到value
for (String key : map.keySet()) {
System.out.println(String.format("key的值是%s\tvalue的值是%s",key,map.get(key)));
}
//方法3for循环中自动实现了迭代器,如不用for循环,那就手动完成迭代器操作
Iterator<String> keys=map.keySet().iterator();
while(keys.hasNext()){
String item=keys.next();
System.out.println(String.format("key的值是%s\tvalue的值是%s",item,map.get(item)));
}
}
如果只是想遍历value的值那直接使用 map.values()方法就行了。