数组与集合的区别、Collection集合及常见的方法

数组与集合的区别

存储类型:

  • 数组可以储存基本数据类型,有可以储存引用数据类型,基本数据储存的是值,引用数据类型储存的是地址值
  • 集合只能储存引用数据类型(对象)集合中也可以储存基本数据类型,但是在储存的时候会自动装箱变成对象

长度:

  • 数组的长度是固定的
  • 集合的长度是可变的,可以根据元素的增加而增长
  • 数组中长度的大小用length,集合中用size()

应用场景:

  • 如果元素的长度是固定的推荐使用数组
  • 如果数组元素的个数不是固定的推荐使用集合

Collection

  • Collection 是一个接口
  • 有很多实现类如ArrayList、HashSet、LinkedList等等
public class Test {
    public static void main(String[] args) {
        //报红,Collection是一个接口,不能实例化
       // Collection<String> c = new Collection<String>();
    }
}
怎么办看看api,有哪些实现类,没有api,也没有关系,在idea中选中此接口 ctrl + alt + B

在这里插入图片描述

public class Test {
    public static void main(String[] args) {
        //报红,Collection是一个接口,不能实例化
        //向上转型
        Collection<String> c = new ArrayList<>();
        c.add("a");
        c.add("b");
        System.out.println(c);
    }
}

Collection的方法

建议没事的时候自己使用使用方法,增加熟练度,当然我所说的不是看着别人的代码敲
  • boolean add(E e); //添加
  • boolean remove(Objiect o); //删除
  • void clear(); //清除
  • boolean contains(Object o); //是否包含
  • boolean isEmpty(); //是否为空
  • int size(); //集合大小
  • Collection带All的基本方法
  • boolean addAll(Collection c) //把集合看作一个对象添加给另外一个集合
  • boolean removeAll(Collection c) //删除两个集合的是交集,返回值是布尔值
  • boolean containsAll(Collection c) //这个集合是否包含另外一个集合的所有元素,返回值是布尔值
  • boolean retainAll(Collection c); 取交集,如果调用的集合改变就返回true,如果调用的集合不变就返回false,主要看c
    在这里插入图片描述

例子

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

public class Collection1 {
	public static void main(String[] args) {
//		demo1();
		Collection c = new ArrayList();
		c.add("a");
		c.add("b");
		c.add("c");
		c.add("d");
		System.out.println(c);			//[a,b,c,d]
		c.remove("b");					
		System.out.println(c);			//[a,c,d]
		c.clear();
		System.out.println(c);			//[]
		c.add("a");
		c.add("b");
		c.add("c");
		System.out.println(c.contains("b"));	//[a,b,c]
		System.out.println(c.isEmpty());		//false
		System.out.println(c.size());			//3
	}

	private static void demo1() {
		/*
		 * add()的参数是一个对象,返回值是布尔值
		 * ArrayList的父类的父类重写toString()方法,所以在打印对象的引用的时候,输出结果不是Object类中toString的结果
		 */
		Collection c = new ArrayList();
		boolean b = c.add("abc");		
		boolean b2 = c.add("abc");
		boolean b3 = c.add(true);
		boolean b4 = c.add(100);
		boolean b5 = c.add(new Student("张三",23));
		System.out.println(b);		//true
		System.out.println(b2);		//true
		System.out.println(b3);		//true
		System.out.println(b4);		//true
		System.out.println(b5);		//true
		System.out.println(c.toString());
	}
}

Student类

public class Student {
	private String name;
	private int age;
	
	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}

	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;
	}

	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	};
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值