【Java基础15_1】Collection类及其基本用法

本文详细介绍了Java集合类的基本概念,包括集合与数组的区别、常用API及其功能介绍,如添加、删除、判断等操作,并通过实例演示了如何使用这些API。此外还讲解了集合的遍历方法,包括使用数组和迭代器进行遍历的具体实现。
Collection类->目录


集合和数组区别

  • 长度区别:
    • 数组的长度是固定的而集合的长度是==可变==的
  • 存储数据类型的区别:
    • 数组可以存储基本数据类型 , 也可以存储引用数据类型;
    • 集合只能存储引用数据类型
  • 内容区别:
    • 数组只能存储同种数据类型的元素 ,集合可以存储==不同类型==的元素
1.体系结构图

Collection体系结构图

Collection常见API
  • 添加功能
方法声明作用
boolean add ( Object obj )添加一个元素
boolean addAll ( Collection c )添加一个集合的元素


  • 删除功能
方法声明作用
void clear()移除所有元素
boolean remove(Object o)移除一个元素
boolean removeAll(Collection c)移除一个集合的元素(一个)


  • 判断功能
方法声明作用
boolean contains(Object o)判断集合中是否包含指定的元素
boolean containsAll(Collection c)判断集合中是否包含指定的集合元素(所有)
boolean isEmpty( )判断集合是否为空


  • 获取功能

    • 获取当前集合的迭代器
方法声明作用
Iterator < E > iterator( )迭代器遍历(重点)


  • 长度功能
方法声明作用
int size()元素的个数


  • 交集功能

boolean retainAll ( Collection );


  • 把集合转换为数组

    Objec [ ] toArray()

面试题
  • 数组有没有 length() 方法呢?字符串有没有length()方法呢 ? 集合有没有 length( ) 方法呢?
  • 答:数组有 length 属性;字符串有length()方法;集合没有 length( ),但是有size( )方法
获取交集的注意事项
boolean retainAll ( Collection c )   
  • 获取交集。获取到的元素去c中,布尔类型的值表示集合是否==发生改变==
  • 如果c.retainAll(c1), 获取到的交集元素去了c中,布尔类型的值表示c这个集合是否发生改变。如果改变了就返回true.
public class CollectionDemo1 {

    public static void main(String[] args) {

        //创建一个集合
        Collection<String> c1 = new ArrayList<>();

        Collection<String> c2 = new ArrayList<>();

        //添加元素
        c1.add("田馥甄");
        c1.add("银临");
        c1.add("谢春花");


        c2.add("谢春花");

        System.out.println("c1获取交集前:"+c1);
        System.out.println("c2获取交集前:"+c2);

        //获取交集
        System.out.println("获取交集后的集合是否发生改变:  "+c1.retainAll(c2));
        System.out.println("C1获取交集后: "+c1);
        System.out.println("C2: "+c2);
    }
}

  • 程序运行结果:
    c1获取交集前:[田馥甄, 银临, 谢春花]
    c2获取交集前:[谢春花]
    获取交集后的集合是否发生改变: true
    C1获取交集后: [谢春花]
    C2: [谢春花]
集合的遍历
  • 其实就是依次获取集合中的每一个元素。有以下两种方法:
1. 用数组遍历
  • 把集合转成数组
  • 通过遍历数组实现遍历集合
    集合转为数组方法:
Object[] toArray():
import java.util.ArrayList;
import java.util.Collection;

/*
 * 用数组遍历集合
 */
public class CollectionTraversalArray {

    public static void main(String[] args) {

        //创建集合
        Collection<String> c = new ArrayList<String>();
        //添加元素
        c.add("周杰伦");
        c.add("朴树");
        c.add("毛不易");

        //转为数组
        Object[] obj = c.toArray();

        //遍历数组
        for(Object ob:obj) {
            //向下转型
            String str = (String)ob;
            System.out.print(str+"  ");
        }

    }

}
package com.itbull;

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

/*
 * 数组遍历法
 * Collection遍历自定义类型Singer
 */
public class CollectionTraversalSinger {

    public static void main(String[] args) {

        //创建Singer
        Singer s1 = new Singer("周杰伦","晴天");
        Singer s2 = new Singer("朴  树","白桦林");
        Singer s3 = new Singer("谭维维","如果有来生");

        // 创建集合
        Collection<Singer> c = new ArrayList<Singer>();

        c.add(s1);
        c.add(s2);
        c.add(s3);

    //转为数组
        Object[] arr = c.toArray();

    //遍历数组
        for(Object obj:arr) {
            Singer ob = (Singer) obj;
            System.out.println(ob.getName()+"-----"+ob.getSongName());
        }

    }

}
//自定义Singer类
public class Singer {
private String name;
private String songName;

public Singer() {
    super();
    // TODO Auto-generated constructor stub
}
public Singer(String name, String songName) {
    super();
    this.name = name;
    this.songName = songName;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getSongName() {
    return songName;
}
public void setSongName(String songName) {
    this.songName = songName;
}
@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((name == null) ? 0 : name.hashCode());
    result = prime * result + ((songName == null) ? 0 : songName.hashCode());
    return result;
}

@Override
public String toString() {
    return "Singer [name=" + name + ", songName=" + songName + "]";
}


}
2. 用迭代器遍历(重点)
  • Iterator 中有如下几个方法可以用来获取集合中的元素:
方法名作用
boolean hasNext ( )判断是否有下一个元素
Object next ( )获取下一个元素
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
 * 迭代器Iterator遍历String
 */
public class CollectionTraversalIterator {

    public static void main(String[] args) {

        //创建集合
        Collection<String> c = new ArrayList<String>();

        //添加元素
        c.add("孙燕姿");
        c.add("金玟岐");
        c.add("范玮琪");

        //获取当前集合的迭代器对象
        Iterator<String> it = c.iterator();

        //如果有下一个,就获取
        while(it.hasNext()) {       
            System.out.println(it.next());
        }


    }

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

/*
 * 用Iterator遍历自定义对象Singer
 */
public class CollectionIteratorSinger {

    public static void main(String[] args) {

        //创建Singer对象
        Singer s1 = new Singer("回音哥","海绵宝宝");
        Singer s2 = new Singer("双   笙","葬花吟");
        Singer s3 = new Singer("玄   觞","不朽之罪");

        //创建集合对象
        Collection<Singer> c = new ArrayList<Singer>();
        //将自定义对象添加到集合中
        c.add(s1);
        c.add(s2);
        c.add(s3);

        //获取集合的迭代器对象
        Iterator<Singer> it = c.iterator();

        System.out.println("\t\t歌手名字\t\t歌曲");
        //如果有下一个就获取

        while (it.hasNext()) {
            Singer singer = it.next();
            System.out.println("\t\t"+singer.getName()+"\t\t"+singer.getSongName());
        }

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值