第五周Java学习总结

一.本周学习、生活总结

  这一周的学习中,我主要学习了有关集合进阶和API的知识点,通过相关的视频,学习了基本的使用方法,这一周所学习的知识相对较难,其中的知识点有些难以理解掌握,所以花费的时间较长。而这次的考核也让我意识到了很多不足,学习速度过慢导致有许多知识点都没见过,一些语法的运用也不熟练。因此我需要提升自己的学习速度,不在某一个知识点上花费过多的时间,让自己能够掌握更多的知识,跟上大部队的脚步。此外,我也会花费一些时间和精力来练习语法的使用,在过去我只是一味地将范例题目进行浅层学习,不对语法进行深入练习,所以在做到新题时往往不知如何下手。多学习,多练习,才能让自己学习的内容更多,质量更好,获得更大的收获。学习就是不断地向困难挑战,攀达更高峰。
  在生活上,随着在校时间的增长,我在课堂上所学的知识也在不断深入,学习压力也在不断增加,平时也有了许多作业,事务也有不少,因此有时会花费更多的精力来分配时间。虽然时间有些紧迫了,但这也培养了我分配时间的能力,在小组的学习也让我收获颇丰,学到了更多的知识。

二.下一周学习计划

  在下一周中,我将首先把之前遗漏的知识点进行复习和总结,将漏洞补上,接着要按照小组下一周的学习计划开展新的学习,对新的知识点进行相应的学习。我会提高我的学习速度,使得能够跟上步伐,同时也能留下一部分时间来进行复习巩固。

三.本周知识点总结

1.集合结构体

在这里插入图片描述
List系列集合:添加的元素是有序、可重复、有索引

Set系列集合:添加的元素是无序、不重复、无索引

2.Collection

Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。

方法名称说明
public boolean add(E e)把给定的对象添加到当前集合中
public void clear()清空集合中所有的元素
public boolean remove(E e)把给定的对象在当前集合中删除
public boolean contains(Object obj)判断当前集合中是否包含给定的对象
public boolean isEmpty()判断当前集合是否为空
public int size()返回集合中元素的个数/集合的长度
import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo1{
	public static void main(String[] args){
		/*
			public boolean add(E e)				添加
			public void clear()					清空
			public boolean remove(E e)			删除
			public boolean contains(Object obj) 判断是否包含
			public boolean isEmpty()			判断是否为空
			public int size()					集合长度
			
			
			注意点:
			 Collection是一个接口,我们不能直接创建他的对象
			 所以,现在我们学习他的方法时,只能创建他实现类的对象。
			 实现类:ArrayList
		*/
		
		//目的:为了学习Collection接口里面的方法
		//自己在做一些练习的时候,还是按照之前的方式去创建对象。
		Collection<String> coll = new ArrayList<>();
		
		
		//1.添加元素
		//细节1:如果我们要往List系列集合中添加数据,那么方法永远返回true,因为List系列的集合是允许元素重复的。
		//细节2:如果我们要往Set系列集合中添加数据,如果当前要添加元素不存在,方法返回true,表示添加成功。
		//                                       如果当前要添加的元素已经存在,方法返回false,表示添加失败。
		//                                       因为Set系列的集合不允许重复。
		coll.add("aaa");
		coll.add("bbb");
		coll.add("ccc");
		System.out.println(coll);
		
		//2.清空
		//coll.clear();
		
		//3.删除
		//细节1:因为Collection里面定义的是共性的方法,所以此时不能通过索引进行删除。只能通过元素的对象进行删除。
		//细节2:方法会有一个布尔类型的返回值,删除成功返回true,删除失败返回false
		//如果要删除的元素不存在,就会删除失败。
		System.out.println(coll.remove("aaa"));
		System.out.println(coll);
		
		//4.判断元素是否包含
		//细节:底层是依赖equals方法进行判断是否存在的。
		//所以,如果集合中存储的是自定义对象,也想通过contains方法来判断是否包含,那么在javabean类中,一定要重写equals方法。
		boolean result = coll.contains("bbb");
		System.out.println(result);
		
		//5.判断集合是否为空
		boolean result2 = coll.isEmpty();
		System.out.println(result2);//false
		
		//6.获取集合的长度
		coll.add("ddd");
		int size = coll.size();
		System.out.println(size);//3
	}
}
结果:
[aaa, bbb, ccc]
true
[bbb, ccc]
true
false
3

Collection的遍历方式

  • 迭代器遍历

    迭代器在Java中的类是Iterator,迭代器是集合专用的遍历方式。

  • 增强for遍历

    增强for的底层就是迭代器,为了简化迭代器1的代码书写的。

    它是JDK5之后出现的,其内部原理就是一个Iterator迭代器

    所有的单列集合和数组才能用增强for进行遍历。

  • Lambda表达式遍历

3.Collection集合获取迭代器

方法名称说明
Iterator iterator()返回迭代器对象,默认指向当前集合的0索引

Iterator中的常用方法

方法名称说明
boolean hasNext()判断当前位置是否有元素,有元素返回true,没有元素返回false
E next()获取当前位置的元素,并将迭代器对象移向下一个位置
Iterator<String> it = list.iterator();
while(it.hasNext()){
    String str = it.next();
    System.out.println(str);
}

细节注意点:

  1. 报错NoSuchElementException
  2. 迭代器遍历完毕,指针不会复位
  3. 循环中只能用一次next方法
  4. 迭代器遍历时,不能使用集合的方法进行增加或者删除
mport java.util.Collection;
import java.util.ArrayList;
import java.util.Iterator;

public class CollectionDemo3{
	public static void main(String[] args){
		/*
			迭代器遍历相关的三个方法:
				Iterator<E> iterator()	:获取一个迭代器对象
				boolean hasNext()		:判断当前指向的位置是否有元素
				E next()				:获取当前指向的元素并移动指针
					
					
			细节注意点:
				1. 报错NoSuchElementException
				2. 迭代器遍历完毕,指针不会复位
				3. 循环中只能用一次next方法
				4. 迭代器遍历时,不能使用集合的方法进行增加或者删除
		*/
		
		//1.创建集合并添加元素
		Collection<String> coll = new ArrayList<>();
		coll.add("aaa");
		coll.add("bbb");
		coll.add("ccc");
		coll.add("ddd");
		
		//2.获取迭代器对象
		//迭代器就好比是一个箭头,默认指向集合的0索引处
		Iterator<String> it = coll.iterator();
		//3.利用循环不断的去获取集合中的每一个元素
		while(it.hasNext()){
			//4.next方法的两件事情:获取元素并移动指针
			String str =  it.next();
			System.out.println(str);
		}
		
		//当上面循环结束之后,迭代器的指针已经指向了最后没有元素的位置
		//System.out.println(it.next());//NoSuchElementException
		
		//迭代器遍历完毕,指针不会复位
		System.out.println(it.hasNext());
		
		//如果我们要继续第二次遍历集合,只能再次获取一个新的迭代器对象
		Iterator<String> it2 = coll.iterator();
		while(it2.hasNext()){
			String str = it2.next();
			System.out.println(str);
		}
	}
}
结果:
aaa
bbb
ccc
ddd
false
aaa
bbb
ccc
ddd

4.增强for遍历

格式:

for (String s : list){
    System.out.println(s);
}

for(元素的数据类型 变量名:数组或者集合){

}

增强for的细节

  • 修改增强for中的变量,不会改变集合中原本的数据。
import java.util.Collection;
import java.util.ArrayList;

public class CollectionDemo6{
	public static void main(String[] args){
		/*增强for格式:
			for(数据类型 变量名: 集合/数组){
			......	
			}
			
			快速生成方式:
				集合的名字 + for回车
		*/
		
		//1.创建集合并添加元素
		Collection<String> coll = new ArrayList<>();
		coll.add("zhangsan");
		coll.add("lisi");
		coll.add("wangwu");
		
		//2.利用增强for进行遍历
		//注意点:
		//s其实就是一个第三方变量,在循环的过程中依次表示集合中的每一个数据
		for(String s : coll){
			System.out.println(s);
		}
	}
}
结果:
zhangsan
lisi
wangwu

5.Lambda表达式遍历

方法名称说明
default void forEach(Consumer <? super T>action):结合lambda遍历集合
import java.util.Collection;
import java.util.ArrayList;

public class CollectionDemo7{
	public static void main(String[] args){
		/*
		 lambda表达式遍历:
				default void forEach(Consumer<? super T> action):
		*/
		
		
		//1.创建集合并添加元素
		Collection<String> coll = new ArrayList<>();
		coll.add("zhangsan");
		coll.add("lisi");
		coll.add("wangwu");
		//2.利用匿名内部类的形式
		//底层原理:
		//其实也会自己遍历集合,依次得到每一个元素
		//把得到的每一个元素,传递给下面的accept方法
		//s依次表示集合中的每一个数据
		/*coll.forEach(new Consumer<String>(){
			@Override
			public void accept(String s){
				System.out.println(s);
			}
		});*/
		
		//lambda表达式
		coll.forEach(s -> System.out.println(s));
		
		
	}
}
结果:
zhangsan
lisi
wangwu

四.结语

  不知不觉,在小组中的学习已经经过了五周,在这五周中,我既有收获,也有困扰,亦有喜悦,在接下来的时间里我将与同学们一同学习,一同进步,取得更大的收获。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值