javaSE--进阶七(集合,迭代器,增强for,数据结构)

数组和集合的区别

1.数组的长度是固定的;数组元素类型可以是基本类型,也可以是引用类型
2.集合的长度是可变的;集合元素类型只能是引用数据类型。
	集合中如要想存储基本数据类型,需要转换为包装类
	int-->Integer

集合的体系结构

在这里插入图片描述

Colletion接口:集合体系的根接口
	-- List接口: 有索引、新增了一些对索引进行操作的方法
		ArrayList类
		LinkedList类

	-- Set接口: 没有索引
		HashSet类
		TreeSet类	

Collection接口

Collection集合体系的根接口,该接口中定义了集合的通用方法。

public boolean add(E e) 
	将指定的元素集合的结尾
public void clear() 
	清空集合中的元素
public boolean contains(Object o) 
	如果这个列表包含指定元素,返回true
public boolean isEmpty() 
	如果集合不包含任何元素,则返回true
public boolean remove(Object o) 
	从这个集合中移除指定元素的一个实例,如果它是存在的(可选操作)。 
default boolean removeIf(Predicate<? super E> filter) 
	删除满足给定条件的这个集合的所有元素。 
    条件:通过Lambda表达式来提供
    
public int size() 
	返回此集合中的元素的数目
//Collection是一个接口,不能直接创建的对象。但是可以创建它的实现类对象,也可以调用接口的方法。
Collection<String> coll=new ArrayList<>();

//添加元素
coll.add("helloJava");
coll.add("world");
coll.add("helloWorld");
coll.add("java");

//删除集合中以"hello"开头的元素
coll.removeIf(s->s.startsWith("hello"));  //这里的s表示集合中的元素

System.out.println(coll); 

迭代器遍历

在Java中所有的集合都可以使用迭代器(Iterator)进行遍历。

Collection<String> coll=new ArrayList<>();

//添加元素
coll.add("土豆1");
coll.add("土豆2");
coll.add("土豆3");

//获取迭代器对象 (筷子)
Iterator<String> it = coll.iterator();

//判断是否有下一个元素
while (it.hasNext()){
    //获取元素
    String e = it.next();
    System.out.println(e);
}

//如果上面的循环结束了,表示元素已经遍历完了。继续获取元素会报错 NoSuchElementException
System.out.println(it.next()); 
  • 使用迭代器遍历的注意事项
注意问题:
	当使用迭代器进行遍历集合的时候,集合自己不能去操作集合中的元素。
	Java不允许迭代器和集合自己并发的修改集合	
	否则java.util.ConcurrentModificationException(并发修改异常)

解决方案:
	使用迭代器自己的删除方法 it.remove()

增强for遍历

增强for其实就是为了简化迭代器的代码书写,原理和迭代器一模一样。

for(元素类型  变量名 :  集合/数组){
	//变量名就表示所有的元素
}
  • 增强for遍历集合
Collection<String> coll=new ArrayList<>();
//添加元素
coll.add("土豆1");
coll.add("土豆2");
coll.add("土豆3");

//增强for
for(String s : coll){
    System.out.println(s);
}
  • 增强for遍历数组
int[] array={1,2,3,4,5};
for(int s:array){
    System.out.println(s);
}

数据结构

数据的组织方式就叫做数据结构,不同的组织方式就形式不同的数据结构,每一种数据结构的特点不一样。

栈结构:先进后出  (子弹夹)

队列结构:先进先出 (排队、安检机)
    
数组:查询快,增删慢

链表:查询慢,增删快(每一个元素记录下一个元素的地址)

LinkedList类特有方法

由于 LinkedList底层是链表,新增了一些针对头和尾进行操作的方法。

public void addFirst(E e)
    添加元素到集合开头
public void addLast(E e)
    添加元素到集合末尾

public E removeFirst()
    移除开头的元素
public E removeLast()
    移除结尾的元素

public E getFirst()
    获取开头的元素
public E getLast()
    获取结尾的元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值