D-16 集合

1 数组封装:

        数组操作,比较复杂也不能进行添加和删除操作,需要添加或删除操作时候需要新建新数组,复制 或移位,太麻烦,所以 我们对添加和删除操作进行封装

public class Array {
	/**
	 * 封装的数组
	 */
	private Object[] elements;
	/**
	 * 数组中已有元素个数
	 */
	private int size = 0;

	public Array() {
		// 数组默认长度为 10
		elements = new Object[10];
	}

	/**
	 * 获取元素个数
	 * 
	 * @return
	 */
	public int size() {
		return size;
	}

	/**
	 * 根据索引获取数据
	 * 
	 * @param index
	 * @return
	 */
	public Object get(int index) {
		// 如果index >= size 说明 不存在
		if (index >= size) {
			throw new ArrayIndexOutOfBoundsException(index);
		}
		return elements[index];
	}

	/**
	 * 更改
	 * 
	 * @param index
	 * @param element
	 */
	public void set(int index, Object element) {
		// 如果index >= size 说明 不存在
		if (index >= size) {
			throw new ArrayIndexOutOfBoundsException(index);
		}
		elements[index] = element;
	}

	/**
	 * 向数组中添加元素
	 * 
	 * @param element
	 */
	public void add(Object element) {
		// 1 判断数组中是否满了
		if (size == elements.length) {
			// 1.2 满了 就扩容,复制数组,再放进去
			// 扩容为原来的二倍
			Object[] newArr = new Object[size << 1];
			// 数组复制
			System.arraycopy(elements, 0, newArr, 0, size);
			// 赋值
			elements = newArr;
		}
		// 添加进去,size++
		elements[size] = element;
		size++;
	}

	/**
	 * 删除指定元素
	 * 
	 * @param index
	 */
	public void remove(int index) {
		// 如果index >= size 说明 不存在
		if (index >= size) {
			throw new ArrayIndexOutOfBoundsException(index);
		}
		// 移位
		for (int i = index; i < size - 1; i++) {
			elements[index] = elements[index + 1];
		}
		// 最后一位赋值为null
		elements[size - 1] = null;
		// 个数-1
		size--;
	}

2 集合

          Java集合 是使程序能够存储和操作元素不固定的一组数据,所有java集合类 都位于java util包中

 Collection 是集合,俩个直接子接口是 List 和set

List 特性:  有序的,可重复的,并且能够保证数据的添加顺序和取出顺序一致

Set 特性  : 无序的,不可重复的,不能保证数据的添加和取出顺序一致

  List 有三个子类:

                ArrayList : 底层是数组,  查询和更改效率非常高

                LinkedList: 底层是双向链表,添加和删除效率高一些

                Vector : 底层也是数组,  是线程安全, 已废弃 ,不推荐使用  被Arralist 替代

set 有 俩个子类:

        HashSet  : 底层为    散列表

        TreeSet :    底层 为二叉树

使用方法

public static void main(String[] args){
		//创建一个ArrayList对象
		Collection collection = new ArrayList();
		//判断是否为空
		System.out.println(collection.isEmpty());
		// 已有元素个数
		System.out.println(collection.size());
		//添加,如果添加一个基本类型,则会进行自动装箱对应的包装类类型,然后在发生多态转型为Object类型
		collection.add(1);
		collection.add(2);
		collection.add(3);
		collection.add("张");
		System.out.println(collection.size());
		System.out.println(collection);
		
		//删除指定元素, 是根据数据删除!!!不是索引
		collection.remove("张");
		System.out.println(collection);
		
		//转为数组
		Object [] arr = collection.toArray();
		for(int i =0;i <arr.length;i++){
			System.out.println(arr[i]);
		}
		//清楚集合中的数据
		collection.clear();
		System.out.println(collection.size());
	}

3 Iterator 迭代器

         迭代器是一种模式,它可以使遍历和被遍历的对象相分离,我们就不会在关心 什么数据结构,如何进行存储得了,只要拿到了迭代器对象就能遍历

迭代器 中有三个方法: 

                boolean hasNext(); 判断游标下是否还有元素,默认指向顶端,并没有指向第一个元素

                E next() : 将迭代器游标向下移动一位,并取出该元素

                remove() ; 删除当前执行的元素,会把集合中的也删除

而且迭代器一旦创建,集合不能删除 和添加 。如果要进行添加和删除,需要重新生成迭代器

迭代器简写方法   就是 增强for循环    forEach

 注意!!!!!!:

        contains(Object o) : 判断是否包含某个元素

        remove(Object o) :删除后指定元素 

       这俩个方法 底层都会取调用equals 方法进行比较

3.1 forEach 

        会把数组中每个元素赋值给变量element  不是下标

4 List

public static void main(String[] args){
		List list = new ArrayList();
		list.add(2);
		list.add(44);
		list.add(11);
		list.add(56);
		list.add(54);
		//对 list进行升序排序
		Collections.sort(list);
		System.out.println(list);
	}
public static void main(String[] args){
		List list = new ArrayList();
		//集合中只能保存引用数据类型,如果添加的是基本类型的话
		//会先进性自动装箱为对应的包装类,然后发生多态转型为Object类型
		//add(E e):尾部添加
		list.add(1);
		list.add(2);
		//add(int index,E e): 把元素插入到指定位置,非特殊情况,尽量不能,因为其他元素需要向后移位
		list.add(0, 3);
		//set(int index,E e): 更改指定索引的元素值
		list.set(1, 4);
		//get(int index): 获取对应索引的元素值
		System.out.println(list.get(0));
		//list 中 remove方法有重载
		//如果传入引用的是 int值,则是删除对应索引的元素,根据索引删除
		//如果传入引用类型的值,则是删除对应的类型,根据元素值删除
		//删除索引为0的元素
		list.remove(0);
		//删除 值为4 的元素
		list.remove(new Integer(4));
		System.out.println(list);
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
后台采用apache服务器下的cgi处理c语言做微信小程序后台逻辑的脚本映射。PC端的服务器和客户端都是基于c语言写的。采用mysql数据库进行用户数据和聊天记录的存储。.zip C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值