java高级特性-------集合框架和泛型(一)

学习目标:

掌握Java集合框架包含的内容

掌握ArrayList和LinkedList的使用

掌握HashSet的使用

掌握增强型for循环的用法



学习内容:

1.前引

程序场景

分析1:分析以上问题,发现数组在存储对象数据时存在一些明显的缺陷:
1:数组长度固定不变,不能很好地适应元素数量动态变化的情况。
2:通过数组名.length获取数组的长度,却无法直接获取数组中实际存储的元素个数。
3:数组采用在内存中分配连续空间的方式存储,根据元素信息查找时效率比较低,需要多次比较。
分析2:针对数组的缺陷,Java提供了比数组更灵活、更实用的集合框架,可大大提高软件的开发效率,并且不同的集合可适用于不同的应用场合。
分析3:如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象——可以使用Java的集合框架

2.Java集合框架包含的内容

Java集合框架包含的内容2-1

Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中

 Java集合框架包含的内容2-2

 3.Collection接口

 List接口3-1

List分为ArrayList和LinkList两种

ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高。

LinkedList采用链表存储方式。插入、删除元素时效率比较高

LinkedList存储的是本元素的内容和下一个元素的地址

List接口3-2

List接口的常用方法(不是所有的方法) 

方法名

说    明

boolean add(Object o)

在列表的末尾顺序添加元素,

起始索引位置从0开始

void add(int index,Object o)

在指定的索引位置添加元素。

索引位置必须介于0和列表中元素个数之间

int size()

返回列表中的元素个数

Object get(int index)

返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换

boolean contains(Object o)

判断列表中是否存在指定元素

boolean remove(Object o)

从列表中删除元素

Object remove(int index)

从列表中删除指定位置元素,

起始索引位置从0开始

4.ArrayList集合类

确定存储方式

ArrayList类是List接口的一个具体实现类

ArrayList对象实现了可变大小的数组

随机访问和遍历元素时,它提供更好的性能

ArrayList的方法

方法名说明
对象名.remove(下标)删除指定的元素
if(对象名.contains(元素名))判断是否包含指定元素
对象名.getFirst()获取第一个元素的具体信息
对象名.getLast();获取最后一个元素的具体信息

5.LinkedList集合类

LinkedList的特殊方法

方法名

说    明

void  addFirst(Object o)

在列表的首部添加元素

void  addLast(Object o)

在列表的末尾添加元素

Object  getFirst()

返回列表中的第一个元素

Object  getLast()

返回列表中的最后一个元素

Object  removeFirst()

删除并返回列表中的第一个元素

Object  removeLast()

删除并返回列表中的最后一个元素

6.ArrayList与LinkedList对比

ArrayListLinkedList
存储方式的区别ArrayList实现了长度可变的数组,在内存中分配连续的空间。LinkedList采用链式存储方式
使用场合的区别ArrayList遍历元素和随机访问元素的效率比较高,插入,删除,修改操作频繁时性能低下LinkedList插入,修改,删除时效率较高,查找效率较低

7.Set接口

Set接口分为两大类HashSet,TreeSet

Set 接口存储一组唯一,无序的对象

Set 接口常用的实现类:HashSet

HashSet 集合的特点

集合内的元素是无序排列且不允许重复。

HashSet集合的查找效率高。

允许集合元素值为null。

方法名说明
boolean add(Object o)如果Set中尚未包含指定元素o,则添加元素o
void clear(int index,Object o)从Set中移除所有元素
int size()返回Set中的元素个数
boolean isEmpty()如果Set不包含任何元素,则返回true
boolean contains(Object o)如果set包含指定元素o,则返回true
boolean remove(Object o)如果Set包含指定元素o,则将其移除。

8.HashSet集合类

HashSet集合类不存在get方法

如何遍历Set集合呢?

方式1:使用增强型for循环   方式2:通过迭代器Iterator实现遍历  

语法

for(元素类型t 元素变量x:数组或集合对象){
引用了x的java语句

}

实例

// 1、创建四个狗狗对象
		Dog ououDog = new Dog("欧欧", "雪娜瑞");
		Dog yayaDog = new Dog("亚亚", "拉布拉多");
		Dog meimeiDog = new Dog("美美", "雪娜瑞");
		Dog feifeiDog = new Dog("菲菲", "拉布拉多");
		// 2、创建HashSet集合对象并把四个狗狗对象放入其中
		Set dogs = new HashSet();
		dogs.add(ououDog);
		dogs.add(yayaDog);
		dogs.add(meimeiDog);
		dogs.add(feifeiDog);
		// 3、使用for增强语法遍历HashSet
		for (Object obj : dogs) {
			Dog dog=(Dog)obj;
			System.out.println(dog.getName()+"\t"+dog.getStrain());
		}

方式2:通过迭代器Iterator实现遍历

实例

 // 1、创建四个狗狗对象
        //  省略创建狗狗对象的代码
	    // 2、创建HashSet集合对象并把四个狗狗对象放入其中
		Set dogs = new HashSet();
		dogs.add(ououDog);
		dogs.add(yayaDog);
		dogs.add(meimeiDog);
		dogs.add(feifeiDog);
		// 3、使用iterator()获取Iterator对象
		Iterator iterator = dogs.iterator();
		// 4、使用Iterator遍历集合
		while (iterator.hasNext()) {
			Dog dog = (Dog) iterator.next();
		System.out.println(dog.getName() + "\t" + dog.getStrain());
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值