JavaSE-Collection

集合

java.util.Collection 集合-用于存储一组元素,提供了用于维护集合的相关操作,它派生了两个接口,List-可重复集,Set-不可重复集

  • boolean add(Object obj) 向集合中添加元素,添加成功返回true
Collection<String> c = new ArrayList<String>();//尖括号中为集合的泛型,基本上每创建一个集合都应该为集合创建一个泛型,其规定了集合当中
存储的数据类型,利于维护和错误检查
c.add("a");c.add("b");c.add("c");
System.out.println(c.add("a"));//true
System.out.println(c);//[a,b,c]
  • int size() 返回集合当中元素的个数。它与数组的长度length有很大区别,数组的长度在声明数组时就以固定,要想超过数组长度再添加元素必须扩容。而集合的size表示集合当中元素的具体个数,没有限制
System.out.println(c.size());//3
  • boolean isEmpty() 判断集合是否为空
System.out.println(c.isEmpty());//false
  • void clear() 清空集合元素
c.clear();
System.out.println(c.size());//0
System.out.println(c.isEmpty());//true
  • boolean contains(Object obj) 判断当前集合是否包含某个元素,判断的依据是根据元素的equals方法比较的结果而定,如果比较结果为true,则视为包含
//先声明一个Point类,包含x、y两个成员变量,提供带参构造,equals方法等在此不做赘述,可由eclipse自动生成
Collection<Object> c = new ArrayList<Object>();
        c.add(new Point(1,2));
        c.add(new Point(3,4));
        c.add(new Point(5,6));
        System.out.println(c);//[(1,2), (3,4), (5,6)]
        Point p = new Point(1,2);
        System.out.println("是否包含?"+c.contains(p));//true
  • 集合存放元素,实际存放的是元素的引用
Collection<Point> c = new ArrayList<Point>();
        
        Point p = new Point(1,2);
        System.out.println(p);//(1,2)
        c.add(p);
        System.out.println(c);//[(1,2)]
        
        p.setX(2);
        System.out.println(p);//(2,2)
        System.out.println(c);//[(2,2)]
  • boolean remove(Object obj) 删除一个集合元素 删除成功返回true 删除元素同样利用元素的equals方法将当前元素与集合中的元素进行比较,比较结果为true则删除该元素
Point p = new Point(1,2);
c.remove(p);
System.out.println(c);//[(3,4), (5,6)]
集合的批量操作
  • List 有序 可重复集合 Set 无序 不可重复集合
        /**
         * List 有序 可重复
         */
        Collection<String> c1 = new ArrayList<String>();
        c1.add("c");
        c1.add("c++");
        c1.add("Java");
        System.out.println("c1:"+c1);//c1:[c, c++, Java]
        /**
         * Set 无序 不可重复
         */
        Collection<String> c2 = new HashSet<String>();
        c2.add("Android");
        c2.add("ios");
        c2.add(".net");
        c2.add("Java");
        c2.add("ios");
        System.out.println("c2:"+c2);//c2:[Java, .net, ios, Android]
  • boolean addAll(Collection c) 取并集操作 将一个集合添加到另一个集合中,添加后集合的元素发生了变化则返回true
boolean flag = c1.addAll(c2);
System.out.println(flag+" "+c1);//true [c, c++, Java, Java, .net, ios, Android] 由于c1为可重复集,所以会有两个Java
  • boolean containsAll(Collection c) 是否包含一个集合中的全部元素
Collection<String> c3 = new ArrayList<String>();
        c3.add("java");
        c3.add("android");
boolean isContains = c1.containsAll(c3);
System.out.println("是否全包含?"+isContains);//true
  • void removeAll(Collection c) 删除当前集合中两个集合的共有元素
c1.removeAll(c2);
System.out.println(c1);//[c,c++]
集合的遍历

Collection提供了统一的集合遍历方式-迭代器模式
java.util.Iterator是一个接口,规定了用于遍历集合的相关方法,不同的集合提供了相应的实现类,无需记住他们的名字,只将他们当做Iterator即可
遍历集合遵循:问-取-删 的原则,其中删除不是必须操作

  • boolean hasNext() 问的过程,该方法判断集合中是否有元素可以取出
  • E next() 取的过程 取出该元素
  • void remove() 删除元素
Iterator<String> it = c.Iteratro();//获取用于遍历当前集合的迭代器
while(it.hasNext()){
    String str = it.next();
    if("c".equals(str)){
        it.remove();//在使用迭代器遍历集合时不要用集合的方式删除元素c.remove(str),否则会抛出异常
   }
   System.out.println(str);//a b
}
System.out.println(c);[a,b]

增强型for循环遍历集合

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

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,505评论 18 399
  • Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为Stri...
    DreamerRzc阅读 236,614评论 26 273
  • 又做了一篇作文翻译,越来越有手感 准备了方案 消化了甲方的策划 做了小狗钱钱的笔记 明天周五!准备健身和看书 还是...
    rrreason阅读 186评论 0 0
  • 补博瑞阅读 169评论 0 0
  • 听着宁静优美的钢琴曲 “My hope is you” 散落在胸前的中长发 黑色披肩的韩式衬衫 迎着车窗外飘进的风...
    Soulhome阅读 247评论 4 1