java集合

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*************/
    }
}
原文地址:https://www.cnblogs.com/blackheartinsunshine/p/6027106.html