集合,增强for,泛型

一,集合:

1.集合和数组一样,可以保存一组数据,并且提供了操作数组元素的相关方法,使用用更加方便

2. 集合框架中的相关接口:

java.util.Collection接口:是所有集合的顶级接口,封装了所有集合所共有的方法,下面有很多实现类,因此我们可以有更多的数据结构来选择。

Collection接口下面有两种常见的子接口;

java.util.List:线性表,是可以重复集合,并且有序

java.util.Set:不可重复集合,大部分实现类是无序的

3. Collection的常用方法:

add():向集合中添加一个元素,成功添加则返回true,否则返回false

size():返回当前集合的元素个数

isEmpty():判断当前集合是否为空集,当且仅当size()为0时返回true

clear():清空集合

contains():判断集合是否包含某元素(equals()相等即为true)

remove():从集合中删除给定元素(equals()相等即为true),成功删除则返回true

addAll():将参数集合中的元素添加到当前集合中,添加后当前集合发生改变则返回true

containsAll():判断当前集合中是否包含参数集合中的所有元素

retainAll():取交集(交集元素留着)

removeAll():删交集(交集元素删除)

iterator():获取一个用于遍历当前集合元素的迭代器

toArray():将集合转换为数组4. 集合的遍历:

Collection接口提供了统一的遍历集合的方式:迭代器模式。通过iterator()方法可以获取一个用于遍历当前集合元素的迭代器(Iterator接口)

java.util.Iterator接口:定义了迭代器遍历集合的相关操作,不同的集合都实现了用于遍历自身元素的迭代器实现类,但我们无需记住它们的名字,从多态的角度把它们看成Iterator即可。

迭代器遍历遵循的步骤为:问(hasNext())、取(next())、删(remove()),但删除并不是必要操作

二. 增强for循环/新循环:

jdk1.5时推出了一个特性:增强型for循环,也称为新循环,让我们使用相同的语法遍历集合和数组。它的内部是通过Iterator实现的,所以不能动态的增删元素。

语法:

for(元素类型 变量名 : 集合或数组){
循环体
}

三 泛型:

JDK1.5时推出了一个特性:泛型

泛型也称为参数化类型,允许我们在使用一个类时,传入某个类型来规定其内部的属性、方法,参数或返回值类型,使得我们使用时更加方便。

泛型在集合中被广泛使用,用来指定集合中元素的类型

若不指定泛型的具体类型,则默认为Object

若指定了泛型的具体类型,则在获取泛型的值时,编译器会自动补充强转操作

四. 集合与数组的互转:

集合转换为数组:

public class CollectionToArray {
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("one");
c.add("two");
c.add("three");
c.add("four");
c.add("five");
System.out.println(c); //[one, two, three, four, five]
//若参数数组元素个数==集合元素个数,那就正常转换
//若参数数组元素个数<集合元素个数,那也正常转换(按照集合大小给数组)
//若参数数组元素个数>集合元素个数,那也正常转换,同时在末尾补默认值
String[] array = c.toArray(new String[5]);
System.out.println(Arrays.toString(array)); //[one, two, three,four, five]
}}

数组转换为集合

public class ArrayToList {
public static void main(String[] args) {
String[] array = {"one", "two", "three", "four", "five"};
System.out.println("array:"+ Arrays.toString(array)); //[one,two, three, four, five]
//asList()方法会返回内部的ArrayList,内部直接引用给定数组array
List<String> list = Arrays.asList(array);
System.out.println("list:"+list); //[one, two, three, four,five]
//对数组操作后,集合也会相应的改变
array[1] = "six";
System.out.println("array:"+ Arrays.toString(array));
System.out.println("list:"+list);
//对集合操作后,数组也会做相应的改变
list.set(2,"seven"); //将集合的第3个元素修改为seven
System.out.println("array:"+ Arrays.toString(array));
System.out.println("list:"+list);
//给集合添加/删除元素相当于给数组添加/删除元素
//而数组是定长的,不会自动扩容/缩容,因此发生不支持操作异常
list.add("!!!!"); //运行时会发生不支持操作异常
}}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值