java中的集合

概述:

  • 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,java就提供了集合类;
  • 数组虽然也可以存储对象,但是长度是固定的,集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象;
  • 集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象;
  • java中有很多的集合类,他们的数据结构不同,但是,他们肯定有共性的内容(存储,获取,判断等),通过不断地向上提取,我们就能够得到一个集合的继承体系结构图;

Collection:

  • Collection:是集合的顶层接口,它的子体系有重复的,有唯一的,有有序的。
  • Collection的功能概述:
    1、添加功能:
    boolean add(Object obj):添加一个元素
package cn.manman.com;

import java.util.ArrayList;
import java.util.Collection;

public class collection {
    public static void main(String[] args) {
        //创建集合对象
        Collection collection=new ArrayList();
        //添加一个元素
        System.out.println("添加一个元素:"+collection.add("h"));
        System.out.println(collection);
    }
}

boolean addAll(Collection c):添加一个集合的元素;

package cn.manman.com;

import java.util.ArrayList;
import java.util.Collection;

public class collection1 {
  public static void main(String[] args) {
      //创建集合1
      Collection collection1=new ArrayList();
      collection1.add("abc1");
      collection1.add("abc2");
      collection1.add("abc3");
      collection1.add("abc4");
      //创建集合2
      Collection collection2=new ArrayList();
      collection2.add("abc5");
      collection2.add("abc6");
      collection2.add("abc7");
      collection2.add("abc8");
      
      //添加一个集合
      collection2.addAll(collection1);
      System.out.println("collection1:"+collection1);
      System.out.println("添加一个集合:"+collection2);
  }
}

2、删除功能:
void clear():移除所有元素;

//移除所有元素
        collection.clear();
        System.out.println("移除所有的元素:"+collection);

boolean remove(Object obj):移除一个元素;

//移除一个元素
collection.add("hello");
collection.add("world");
collection.add("java");
collection.remove("world");
System.out.println("移除一个元素:"+collection);

boolean removeAll(Collection c):移除一个集合的元素;

//移除一个集合
collection2.removeAll(collection1);
System.out.println("移除一个集合:"+collection2);

3、判断功能:
boolean contains(Object obj):判断集合中是否包含指定的集合元素;

//判断集合中是否包含指定的元素
System.out.println("判断集合中是否包含指定的元素:"+collection.contains("python"));
System.out.println("判断集合中是否包含指定的元素:"+collection.contains("java"));

boolean containsAll(Collection c):判断集合中是否包含指定的集合元素;

//判断集合中是否包含指定的集合元素
System.out.println("判断集合中是否包含指定的集合元素:"+collection2.containsAll(collection1));

boolean isEmpty():判断集合是否为空;

//判断集合是否为空
System.out.println("判断集合是否为空:"+collection.isEmpty());

4、获取功能:
Iterator<E> iterator()

package cn.manman.com;

import java.util.ArrayList;
import java.util.Collection;

public class collection2 {
    public static void main(String[] args) {
        //创建集合对象
        Collection collection=new ArrayList();
        
        //添加元素
        collection.add("hello");
        collection.add("world");
        collection.add("java");
        
        //遍历
        //把集合转为数组,可以实现集合的遍历
        Object[] objects=collection.toArray();
        for (int i = 0; i < objects.length; i++) {
            String s1=(String) objects[i];//转成字符串是为了后面可以获取他的字符串长度
            System.out.println(objects[i]+"----"+s1.length());
            
        }
        
    }
}

5、长度功能:
int size():元素的个数;

//元素的个数
System.out.println("元素的个数:"+collection.size());

6、交集功能:
boolean retainAll(Collection c):两个集合都有的元素;

//交集
System.out.println("交集功能:"+collection1.retainAll(collection2));
System.out.println(collection1);


最后的输出 结果为空是因为我给的两个集合没有共同的元素;
7、把集合转换为数组:
Object[] toArray

package cn.manman.com;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
 * 集合的专用遍历方式
 */
public class collection3 {
    public static void main(String[] args) {
        //创建集合对象
        Collection collection=new ArrayList();
                
        //添加元素
        collection.add("hello");
        collection.add("world");
        collection.add("java");
        
        //Iterator iterator():迭代器,集合的专用遍历方式
        Iterator it =collection.iterator();
        
        while (it.hasNext()) {
            String s1=(String) it.next();
            System.out.println(s1);
            
        }
        
    }
}

Collection存储字符串并遍历练习

  • 存储字符串并遍历
package cn.manman.com;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
 * 分析:
 *  A:创建集合对象
 *  B:创建字符串对象
 *  C:把字符串对象添加到集合中
 *  D:遍历集合
 */
public class CollectionTest {
    public static void main(String[] args) {
        //创建集合对象
        Collection c=new ArrayList();
        
        //创建字符串对象
        //把字符串对象添加到集合中
        c.add("林青霞");
        c.add("风清扬");
        c.add("亚瑟");
        c.add("鲁班");
        c.add("伽罗");
        
        //遍历集合
        //通过集合对象获取迭代器对象
        Iterator iterator=c.iterator();
        while (iterator.hasNext()) {
            String s1=(String) iterator.next();
            System.out.println(s1);
            
        }
    }
}

存储自定义对象并遍历Student(name,age)

package cn.manman.com;

public class Student {
    private String name;
    private int age;
    public Student(){
        super();
    }
    public Student(String name,int age){
        super();
        this.name=name;
        this.age=age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
}

package cn.manman.com;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
 * 需求:存储自定义对象并遍历Student(name,age)
 * 分析:
 *      A:创建学生类
 *      B:创建集合对象
 *      C:创建学生对象
 *      D:把学生对象添加到集合对象中
 *      E:遍历集合
 */
public class CollectionTest2 {
    public static void main(String[] args) {
        //创建集合对象
        Collection c=new ArrayList();
        
        //创建学生对象
        Student s=new Student("伽罗",21);
        Student s1=new Student("吕布",20);
        Student s2=new Student("妲己",22);
        Student s3=new Student("亚瑟",23);
        Student s4=new Student("后裔",25);
        
        //把学生对象添加到集合对象中
        c.add(s);
        c.add(s1);
        c.add(s2);
        c.add(s3);
        c.add(s4);
        c.add(new Student("ALisa",22));
        
        //遍历学生
        Iterator it= c.iterator();
        while(it.hasNext()){
            Student student=(Student) it.next();
            System.out.println(student.getName()+"---"+student.getAge());
        }
    }
}

List:

package cn.manman.com;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
 * 需求:List集合存储字符串并遍历
 */
public class ListDemo {
    public static void main(String[] args) {
        //创建集合对象
        List list=new ArrayList();
        
        
        //创建字符串并添加
        list.add("hello");
        list.add("world");
        list.add("java");
        
        //遍历集合
        Iterator it=list.iterator();
        while (it.hasNext()) {
            String s1= (String) it.next();
            System.out.println(s1);
            
        }
                
    }
}

  • List集合的特点是:有序(存储和取出的元素是一致),可重复的;
package cn.manman.com;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
 * 需求:List集合存储字符串并遍历
 */
public class ListDemo {
    public static void main(String[] args) {
        //创建集合对象
        List list=new ArrayList();
        
        
        //创建字符串并添加
        list.add("hello");
        list.add("world");
        list.add("java");
        list.add("java");
        
        //遍历集合
        Iterator it=list.iterator();
        while (it.hasNext()) {
            String s1= (String) it.next();
            System.out.println(s1);
            
        }
                
    }
}

  • List集合的特有功能:
    void add(int index,Object element):在指定位置添加元素;
package cn.manman.com;

import java.util.ArrayList;
import java.util.List;

public class ListDemo1 {
    public static void main(String[] args) {
        //创建集合对象
        List list =new ArrayList();
        
        //添加元素
        list.add("hello");
        list.add("world");
        list.add("java");
        
        //输出list
        System.out.println("list:"+list);
        
        //在指定位置添加元素;
        list.add(1, "xuman");
        System.out.println("添加后的list集合:"+list);
    }
}

Object get(int index):获取指定位置的元素;

//获取指定位置的元素;
System.out.println("获取指定位置的元素:"+list.get(1));

ListIterator listIterator():List集合特有的迭代器;

package cn.manman.com;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class list迭代器 {
    public static void main(String[] args) {
        //创建对象
        List list =new ArrayList();
        
        //添加元素
        list.add("hello");
        list.add("world");
        list.add("java");
        
        //创建List集合特有的迭代器;
        ListIterator li=list.listIterator();
        
        //遍历list集合
        while (li.hasNext()) {
            String s = (String) li.next();
            System.out.println(s);
            
        }
        
    }
}

该迭代器其实继承Iterator,所以可以直接使用hasnext()和next()方法,这个迭代器可以往前拿元素:
Object previous():往前取元素;

//遍历list集合
        while (li.hasNext()) {
            String s = (String) li.next();
            System.out.println(s);
            
        }
        System.out.println("----------");
        while (li.hasPrevious()) {
            String s = (String) li.previous();
            System.out.println(s);
            
        }

Object remove(int index):根据索引删除元素;

//根据索引删除元素;
list.remove(1);
System.out.println("按照索引删除后的list集合:"+list);

Object set (int index,Object element)::根据索引返回被修饰的元素;

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

推荐阅读更多精彩内容

  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX阅读 820评论 0 1
  • 四、集合框架 1:String类:字符串(重点) (1)多个字符组成的一个序列,叫字符串。生活中很多数据的描述都采...
    佘大将军阅读 707评论 0 2
  • 前言:一名iOS开发工程师,正在学习Android开发,期待各路大神指点和学习交流.学习交流讨论及资料获取请关注:...
    极客James阅读 4,326评论 0 5
  • 本文转自我的博客阅读原文。 概览 Collection是与数组一个阶层的数据类型。不同的是,数组是定长并且数据类型...
    xuan241阅读 307评论 0 0
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,334评论 0 4