JAVA——Collection集合、特点、常用API

个人简介

  • 大家好,我是翰慧腾。一名正在努力学JAVA的大一小白,本文章为初学的笔记,希望各位多多指教。💙
  • 欢迎点赞+收藏+留言💜
  • 努力已经来不及,你得拼命🧡

一、集合

  • 概述:集合同数组一样都是容器,但数组定义后长度、存储的数据类型不可改变;而集合是JAVA中存储对象数据的一种容器,长度、数据类型都不确定,在实际开发中常常做增删操作。但是集合只能存储引用数据类型,如果要存储基本数据类型可以选用包装类;而数组可以存储基本数据类型和引用数据类型。
  • 集合类体系结构:集合可以分为单列和双列,单列就是在每一个元素只包含一个值(Collection),而双列每个元素包含两个值(Map).

二、Collection集合体系

Collection是单列集合的祖宗接口,集合都是支持泛型的,可以在编译阶段约束集合只能操作某种数据类型。见下图(来源于黑马程序员):

注意:集合和泛型都只能支持引用数据类型,不支持基本数据类型,因此集合中存储的元素都认为是对象。

List集合:添加的元素是有序、可重复、有索引。

set集合:添加的元素是无序、不重复、无索引。

代码演示:

package Stickto;

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

public class Collection_ {
	public static void main(String[] args) {
		Collection c=new ArrayList();//多态
		c.add("JAVA");
		c.add("真有");
		c.add("真有");
		c.add("意思");
		System.out.println(c);//List集合重复
		Collection cc=new HashSet();//多态
		cc.add("JAVA");
		cc.add("真有");
		cc.add("真有");
		cc.add("意思");
		System.out.println(cc);//Set集合重复
	}
}

结果:

三、Collection常用API

API用法见代码演示:

package Stickto;

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

public class Collection_1 {

	public static void main(String[] args) {
		Collection<String> c=new ArrayList<>();
		Collection<String> cc=new HashSet<>();
		//1.add方法,用于添加元素。返回值是boolean类型,检验添加元素是否成功
		c.add("我爱");
		c.add("JAVA");
		System.out.println(c.add("JAVA"));//返回true,表示添加元素成功
		System.out.println(c);//结果:[我爱, JAVA, JAVA]
		/*由于上面是ArrayList,可以有重复元素,所以通常都是添加成功
		 * 但是在HashSet中不可以有重复元素,就有可能会添加失败
		 */
		cc.add("我爱JAVA");
		System.out.println(cc.add("我爱JAVA"));//false,添加元素失败
		//2.clear方法,用于清空集合
		/*c.clear();
		System.out.println(c);//结果:[]*/
		//3.isEmpty方法,用于判断集合是否为空,返回值为boolean类型
		System.out.println(c.isEmpty());//结果:false.集合不为空
		//4.size方法,获取集合大小
		System.out.println(c.size());//结果为3
		//5.contains方法,用于判断集合中是否包含某个元素
		System.out.println(c.contains("JAVA"));//结果:true 表示该集合包含元素JAVA
		System.out.println(c.contains("java"));//结果:false 表示该集合不包含java
		//6.remove方法 用于删除元素,返回值是boolean类型。判断删除元素是否成功。注意对象是Collection类型,所以只能指定元素名称删除,不能用索引值。只有List集合有索引值
		System.out.println(c.remove("我爱"));//结果:true.删除成功
		System.out.println(c);//结果:[JAVA, JAVA]。//若删除的元素集合中有多个,则只删除第一个,并不会全部删除。
		//7.toArray方法。用于把集合装为数组。
		//String[] arr=c.toArray();这样写的话会报错,通常我们会写成Object
		Object[] arr=c.toArray();
		//8.addAll方法,用于把另一个集合元素方法该集合
		c.addAll(cc);
		System.out.println(c);//结果:[JAVA, JAVA, 我爱JAVA]
		
	}

}

迭代器遍历:遍历就是一个一个的把容器中的元素访问一遍,迭代器在JAVA中的代表是Iterator,迭代器是集合的专用遍历方式。

具体方法代码演示:

package Stickto;

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

public class Collection_2 {
	public static void main(String[] args) {
		Collection<String> c=new ArrayList<>();
		c.add("小明");
		c.add("小刚");
		c.add("小兰");
		c.add("小刘");
		System.out.println(c);
		Iterator<String> i=c.iterator();//调用iterator方法,返回此集合中的元素迭代器。
		//System.out.println(i.next());开始遍历集合元素
		while(i.hasNext()) {//调用Iterator中hasNext方法,判断是否有下一个元素
			String ii=i.next();//调用Iterator中next方法,遍历元素
			System.out.println(ii);
		}
	}
}

foreach遍历:既可以遍历集合也可以遍历数组,相当与是迭代器的简化写法。

只有实现Iterator接口的类才可以使用迭代器和foreach,Collection接口已经实现了Iterator接口。

格式:for(数据类型 变量名:数组名或者Collection集合名){

使用变量即可,该变量就是元素

}

代码演示:

package Stickto;

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

public class foreach_ {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int[] arr= {12,11,56,67,78};
		//用该方法遍历数组
		for(int i:arr) {
			System.out.println(i);
		}
		//用该方法遍历集合
		Collection<String> c=new ArrayList<>();
		c.add("小明");
		c.add("小刚");
		c.add("小刘");
		c.add("小韩");
		for(String j:c) {
			System.out.println(j);
		}
	}

}

结果:

Lambda表达式遍历集合:该遍历方式是jdk8以后的新技术,是一种更直接、更简单的遍历集合方式。 

代码演示:

package Stickto;

import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;

public class Collection_3 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Collection<String> c=new ArrayList<>();
		c.add("小明");
		c.add("小刚");
		c.add("小刘");
		c.add("小韩");
		c.forEach(new Consumer<String>() {

			@Override
			public void accept(String s) {
				// TODO 自动生成的方法存根
				System.out.println(s);
			}
		});
		//用之前学到Lambda表达式简化匿名内部类进一步简化
		c.forEach(t-> System.out.println(t));
}
}

Collection集合存储自定义类型的对象:集合存储电影信息

package Stickto;

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

public class Collection_case {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Collection<movice> c=new ArrayList<>();
		c.add(new movice("扬名立万",9.5,"小明"));
		c.add(new movice("黑客帝国",9.2,"小刚"));
		c.add(new movice("狙击手",8.9,"小张"));
		for(movice m:c) {
			System.out.println("片名:"+m.getName()+",评分:"+m.getScore()+",主演:"+m.getActress());
		}
	}

}
class movice {
	private String name;
	private double score;
	private String actress;
	
	public movice() {
		// TODO 自动生成的构造函数存根
	}

	public movice(String name, double score, String actress) {
		super();
		this.name = name;
		this.score = score;
		this.actress = actress;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getScore() {
		return score;
	}

	public void setScore(double score) {
		this.score = score;
	}

	public String getActress() {
		return actress;
	}

	public void setActress(String actress) {
		this.actress = actress;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨四点半sec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值