JAVA集合------萌新学习之路,Iterator、foreach 遍历

Java集合大致分为三类:set、map、list(queue,JDK1.5之后新增,dictionary过时类似map键值对存储形式)

使用时引入 java.util

set: 无序不可重复集合

map:具有映射关系的集合

list:有序,可重复的集合

集合示意图

Paste_Image.png

Java的集合类主要由Java集合框架的根接口collection、map派生而来

Paste_Image.png

常用的collection和iterator接口

接口 描述
boolean add(Object o) 该方法用于向集合里添加一个元素,如果添加成功返回true
boolean addAll(Collection c) 该方法把集合c的所有元素添加到指定集合中,成功返回true
void clear() 清楚指定集合的所有元素,将集合长度变为0
**boolean contains(Object o) ** 返回集合是够包含指定元素
boolean containsAll(Collection c) 返回集合是否包含指定元素
boolean isEmpty() 返回集合是否为空
iterator iteraot 返回一个iterator对象用于遍历集合所有元素
boolean remove(Object o) 删除集合中的o元素,如果集合中有多个删除多个,成功返回true
boolean removeAll(Collection c) 从集合中删除集合c里包含的所有元素,相当于集合减去c集合,如果集合元素删除了一个或多个返回true
boolean retainAll(Collection c) 从集合中删除不包含c集合里不包含的元素,返回true
int size() 返回集合元素的个数
Object[] toArray() 把集合转换为一个数组,所有集合元素变成数组元素

代码示例


public static void main(String[] args) {
        Collection c = new ArrayList();
        //添加元素
        c.add("钢铁是怎样炼成的");
        //虽然Java集合不能存放基本类型,但是Java支持自动装箱
        c.add(6);
        System.out.println("c集合的元素个数是"+c.size());
        //判断是否包含指定字符串
        System.out.println("判断集合c是否包含指定的字符串"+c.contains("钢铁"));
        c.add("朝花夕拾!");
        System.out.println("c集合的元素"+c);
        //删除集合里的所有元素
        Collection books = new HashSet();
        books.add("钢铁是怎样炼成的");
        books.add("茶花女");
        System.out.println("c集合是否完全包含books集合?"+c.containsAll(books));
        //c集合的元素减去books的元素
        c.removeAll(books);
        System.out.println("移除之后c集合的元素"+c);
        //删除c集合中的所有元素
        c.clear();
        System.out.println("c集合的元素"+c);
        //books集合里值剩下c集合里也同事包含的元素
        books.retainAll(c);
        System.out.print("books里的元素"+books);

    }

}

**
ArrayList和HashMap实现类虽然不同,但是把他们当成Collection来使用时,使用 add、remove、clear等方法时完全一样
所有Collection 的实现类重写了toString()方法,该方法可以一次性输出集合的所有元素
**

使用iterator接口遍历集合元素

iterator迭代器主要用来遍历集合元素

接口方法

方法 描述
boolean hasNext() 如果被迭代的集合元素都还没有被遍历,则返回true
Object next() 返回集合里面的下一个元素
void remove() 删除集合里上一次next方法返回的元素

代码示例

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class CellectionTest {
    public static void main(String[] args) {
        //创建一个集合
        Collection testCollection = new HashSet();
        //添加元素
        testCollection.add("霸王花!");
        testCollection.add("三生三世");
        testCollection.add("十里桃花");
     //   testCollection.clear();
        //获取对应的iterator
      Iterator it = testCollection.iterator();
      while(it.hasNext()){
          //it.next()返回类型是Object需要强制转换
          String str = (String)it.next();
          System.out.println(str);
          System.out.println(testCollection); 
          if(str.equals("三生三世")){
              it.remove();
          }
      }

    }

}


**
Collection中的元素不能 被改变,只有通过 Iterator的remove方法先删除next方法返回的元素,不然将会引发java.util.ConcrrentModificationException异常
**

使用foreach遍历集合元素

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class CellectionTest {
    public static void main(String[] args) {
        //创建一个集合
        Collection testCollection = new HashSet();
        //添加元素
        testCollection.add("十里桃花");
        testCollection.add("三生三世");
        testCollection.add("霸王花!");
     //   testCollection.clear();
        //获取对应的iterator
      System.out.println(testCollection); 
      for(Object obj: testCollection){
          String str = (String) obj;
          System.out.println(str);
          if (str.equals("三生三世")){
        //    testCollection.remove();  引发异常
          }
      }
      System.out.println(testCollection);
    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容

  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX阅读 874评论 0 1
  • 1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:V...
    Oneisall_81a5阅读 901评论 0 11
  • title: java集合框架学习总结 tags:集合框架 categories:总结 date: 2017-03...
    行径行阅读 1,685评论 0 2
  • 1.Java集合框架是什么?说出一些集合框架的优点?每种编程语言中都有集合,最初的Java版本包含几种集合类:Ve...
    yjaal阅读 1,177评论 1 10
  • 此刻,是北京时间凌晨3点,近七个小时的车程,从长春到北京,昏昏沉沉睡了一路,来到火车站旁边的德克士点了一份鸡肉堡,...
    lucky粉豆阅读 361评论 0 0