容器、泛型和枚举

容器

容器:

  • 容器的长度可以根据数据的多少自动增删
  • 是引用是引用数据类型
  • 容器中可以存储任意类型的数据
  • 所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象。Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作。
1.collection接口

Collection 接口是一组允许重复的对象。

Set 接口继承 Collection,无序不允许重复,使用自己内部的一个排列机制。

List 接口继承 Collection,有序允许重复,以元素安插的次序来放置元素, 不会重新排列。

Map 接口是一组成对的键值对象.

package com.tyl.homework0707;

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

public class CollectionDemo {
	public static void main(String[] args) {
		Collection c2 = new ArrayList();
		c2.add("0000");
		System.out.println(c2);      
2.ArrayList

ArrayList 是 List 的子类,它和 HashSet 相反,允许存放重复元素,因此有序。如果对 ArrayList 进行访问,迭代器将从索引 0 开始, 每迭代一次,索引值加 1。

遍历方式:

  • 增强for循环
for(Object o:c2) {
		System.out.println(o);
	}
  • 普通for循环方式

  • 迭代器

Iterator it = c2.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
		

几个List接口的区别:

1) AarryList :

  • 底层实现: 可变数组实现的,内部 通过数组拷贝实现根据内容可变长
  • 优点 : 根据索引查询效率高
  • 缺点 :错增加删除时效率低,因为要通过数组拷贝实现
  • 应用场景: 存储耽搁数据,有序可以重复–>大量做查询,少量增删,推荐使用ArrayList
  • 扩容: 在第一次添加数据时候初始容量10 , 通过Arrays.copyof方法进行动态扩容,每次扩容原容量的1.5倍
    源码:
    int newCapacity = oldCapacity + (oldCapacity >> 1);

2) Vector:

  • 底层实现: 可变数组实现的
  • 扩容:: 在第一次添加数据时候初始容量10 , 每次扩容原容量的2倍
  • 与ArrayList不同点:
  • 1)AarryList线程不安全 ,vector线程安全
  • 2)扩容问题: ArrayList1.5倍增长 vector2倍增长 ArrayList更有利于节省内存

3)LinkedList:

  • 底层实现: 双向链表实现的
  • 优点:增删效率高
  • 缺点: 查询效率低
  • 应用场景: 存储耽搁数据,有序可以重复–>如果做大量的增删,少量的查询,推荐使用LinkedList
3.泛型

把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型

泛型的好处:

增强程序的可读性和稳定性。

使用泛型,保留了容器中元素的类型,安全省心的使用容器。

package com.tyl.homework0707;

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

public class ArrayListCopy02 {
	public static void main(String[] args) {
		//泛型不能使用基本类型,只能使用引用类型
		List<Integer> list = new ArrayList();
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);
		list.add(5);

枚举

枚举类可以简单地理解为一种特殊的java类 。通过关键字 enum实现,自动继承自Enum类(枚举类),其中每一个数据,都是枚举类的实例。

enum Week{
    //每个都是实例
	Mon,Tue,Sun;
    //可以有其他属性
	private	String name;
	private int num;
【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质?你是否想成为一名资深开发人员,想开发别人做不了的高性能程序?你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? 那么C++就是你个人能力提升,职业之路进阶的不二之选。【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署;2.吊打一切关于C++的笔试面试题;3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块基础篇本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。进阶篇本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。提升篇:本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值