A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 燿陚√揚葳 中级黑马   /  2014-7-5 23:20  /  984 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 燿陚√揚葳 于 2014-7-8 12:06 编辑

不知道大家开始学习集合的时候有没有被绕晕了,总结一下分享给大家,看看还有没有要补充的了
1.List集合的遍历方式:

  1. <P>public class CollectionDemo {
  2. //集合元素的获得
  3. public static void method_get(){
  4. ArrayList al=new ArrayList();
  5. al.add("java001");
  6. al.add("java002");
  7. al.add("java003");
  8. al.add("java004");
  9. /*第一种方式,这样写比第二种便于观看
  10. Iterator it=al.iterator();//获取迭代器,用于取出集合中的元素

  11. while(it.hasNext()){
  12. sop(it.next());
  13. }
  14. */
  15. //第二种方式,这样更节省内存空间
  16. for(Iterator it=al.iterator();it.hasNext();){
  17. sop(it.next());
  18. }
  19. }
  20. //第三种高级for循环
  21.   for(Object sl:al){
  22.    System.out.print(sl);
  23.   }
  24. public static void sop(Object obj){
  25. System.out.println(obj);
  26. }
  27. public static void main(String[] args) {

  28. method_get();

  29. }

  30. }

  31. <P> </P>
复制代码
如果想要其他的操作如添加,修改等就需要使用其子接口,ListIterator 该集合只能通过List集合的ListIterator方法获取
  1. public class MapTest {

  2. public static void main(String[] args) {
  3. /*
  4. * 如果想要其他的操作如添加,修改等就需要使用其子接口,ListIterator
  5. * 该集合只能通过List集合的ListIterator方法获取
  6. *
  7. */
  8. //演示列表迭代器
  9. ArrayList al=new ArrayList();
  10. al.add("java01");
  11. al.add("java02");
  12. al.add("java03");
  13. al.add("java04");
  14. ListIterator lt=al.listIterator();
  15. while(lt.hasNext()){
  16. Object obj=lt.next();
  17. if(obj.equals("java04"))
  18. // lt.add("java05");
  19. lt.set("java");
  20. }
  21. sop(al);
  22. sop("hasPrevious:"+lt.hasPrevious());//true
  23. sop("hasNext:"+lt.hasNext());//false



  24. }
  25. public static void sop(Object obj){
  26. System.out.println(obj);
  27. }

  28. }
复制代码

枚举的
  1. public class VectorDemo {

  2. public static void main(String[] args) {
  3. Vector al=new Vector();
  4. al.add("java01");
  5. al.add("java02");
  6. al.add("java03");
  7. al.add("java04");
  8. Enumeration e=al.elements();
  9. while(e.hasMoreElements()){
  10. sop(e.nextElement());
  11. }



  12. }
  13. public static void sop(Object obj){
  14. System.out.println(obj);
  15. }



  16. }
复制代码

2.Set集合的遍历
TreeSet和HashSet遍历一样

  1. <P>public static void main(String[] args) {
  2. HashSet hs=new HashSet();
  3. //元素唯一,有重复的元素不会添加进去
  4. sop(hs.add("java01"));//返回true
  5. sop(hs.add("java01"));</P>
  6. <P>hs.add("java02");
  7. hs.add("java03");
  8. hs.add("java04");
  9. hs.add("java03");
  10. hs.add("java04");

  11. //Set 接口取出的方式只有一种,迭代器(高级for循环除外)
  12. Iterator it=hs.iterator();
  13. while(it.hasNext()){
  14. sop(it.next());
  15. }</P>
  16. <P>for(Object s:ts){
  17.    System.out.println(s);
  18.   }

  19. }</P>
复制代码

3.Map集合的遍历方式
第一种:Set<k>keySet:将Map中所有的键存入到Set集合,因为Set具备迭代器
所以可以用迭代方式取出所有的键,再根据get方法,获取每一个键对应的值
Map集合的取出原理,将Map集合转成Set集合,再通过迭代器取出
  1. public class Coo {
  2. public static void main(String[] args){
  3. Map<String,String> m=new HashMap<String,String>();
  4. m.put("01","java01");
  5. m.put("02", "java02");
  6. m.put("03","java03");
  7. //先获取Map集合的所有键的Set集合,keySet()
  8. Set<String> st=m.keySet();
  9. //有了Set集合就可以获取其迭代器
  10. Iterator<String> it=st.iterator();
  11. while(it.hasNext()){
  12. String key=it.next();
  13. //有了键可以通过Map集合的get方法获取其对应的值
  14. String value=m.get(key);
  15. sop("key:"+key+"***value:"+value);
  16. }
  17. }
  18. public static void sop(Object obj){
  19. System.out.println(obj);
  20. }
复制代码

第二种:Set<Map.Entry<k,v>>entrySet:将Map集合中的映射关系存入到了Set集合中。 而这个关系的数据类型就是:Map.Entry
  1. public static void main(String[] args){
  2. Map<String,String> m=new HashMap<String,String>();
  3. m.put("01","java01");
  4. m.put("02", "java02");
  5. m.put("03","java03");
  6. //将Map集合中的映射关系取出,存入到Set集合中
  7. //Map.Entry是一个关系对象
  8. Set<Map.Entry<String, String>> entrySet=m.entrySet();
  9. Iterator <Map.Entry<String, String>> it=entrySet.iterator();//Set泛型是什么这里就是什么
  10. while(it.hasNext()){
  11. Map.Entry<String, String> me=it.next();
  12. String key=me.getKey();
  13. String value=me.getValue();
  14. sop("key:"+key+"***value:"+value);
  15. }
  16. }
  17. public static void sop(Object obj){
  18. System.out.println(obj);
  19. }
复制代码

第三种:高级for循环
for(数据类型 变量名:被变量的集合(Collection)或者数组){
Map集合遍历时三种方法,都是要将Map先转换成Set集合
  1. public static void main(String[] args) {

  2. HashMap<Integer,String> hm=new HashMap<Integer,String>();
  3. hm.put(1,"a");
  4. hm.put(2,"b");
  5. hm.put(3,"c");
  6. // for(Map.Entry<Integer,String> me:hm.entrySet()){
  7. // System.out.println(me.getKey()+"**********"+me.getValue());
  8. // }

  9. Set<Integer> keySet=hm.keySet();
  10. for(Integer in:keySet){
  11. System.out.println(in+"***"+hm.get(in));
  12. }


  13. }

复制代码

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

2 个回复

倒序浏览
支持一下,很详细
回复 使用道具 举报
谢谢楼主,支持一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马