JavaCoreTechnology_Day10.11
2022/6/8 1:20:16
本文主要是介绍JavaCoreTechnology_Day10.11,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Day10
泛型程序设计
对于Java泛型的转换需要记住一下几个事实:
- 虚拟机中没有泛型,只有普通的类和方法
- 所有的类型参数都会替换为他们的限定类型
- 会合成桥方法来保持多态
- 为保持类型安全性,必要时会插入强制类型转换
Day11
集合
迭代器
package cn.gyk; import java.util.ArrayList; /** * @author Pickled * @version V1.0 * @date 2022/6/5 14:11 */ public class Iterator { public static void main(String[] args) { ArrayList arrayList = new ArrayList<Integer>(); arrayList.add(1); arrayList.add(2); arrayList.add(3); arrayList.add(4); java.util.Iterator iterator = arrayList.iterator(); iterator.forEachRemaining(System.out::println); } }
集合在remove之前不调用next是不合法的
remove方法将删除刚刚被访问过的元素
package cn.gyk; import java.util.Iterator; import java.util.LinkedList; /** * @author Pickled * @version V1.0 * @date 2022/6/6 17:22 */ public class ListDemo1 { public static void main(String[] args) { var staff = new LinkedList<String>(); staff.add("Amy"); staff.add("Bob"); staff.add("Carl"); Iterator<String> iterator = staff.iterator(); String first = iterator.next(); String second = iterator.next(); iterator.remove();; System.out.println(staff); } }
ListIterator接口可以提供反向遍历链表
import org.testng.annotations.Test; import java.util.Iterator; import java.util.LinkedList; import java.util.ListIterator; /** * @author Pickled * @version V1.0 * @date 2022/6/6 17:27 */ public class ListTest { @Test public void test1(){ var staff = new LinkedList<String>(); staff.add("Amy"); staff.add("Bob"); staff.add("Carl"); ListIterator<String> iterator = staff.listIterator(); iterator.next(); iterator.add("Juliet"); iterator.add("Tom"); System.out.println(staff); //多次调用 add 依次把元素添加到该迭代器位置之前 //[Amy, Juliet, Tom, Bob, Carl] //而iterator接口只是将元素添加到集合的尾部 //链表域泛型集合之间还是有很大区别 } }
通常需要用整数索引访问元素时,通常不使用链表,但是LinkedList还是有一个get方法,但是这个方法效率极低,是一个一个遍历链表查找的,但是做了一个小小的优化,当n大于size的二分之一时,就从尾部开始遍历。
对于LinkedList可以使用ListIterator类实现从两个方向遍历链表中的元素
import org.testng.annotations.Test; import java.util.Iterator; import java.util.LinkedList; import java.util.ListIterator; /** * @author Pickled * @version V1.0 * @date 2022/6/6 17:27 */ public class ListTest { @Test public void test1(){ var staff = new LinkedList<String>(); staff.add("Amy"); staff.add("Bob"); staff.add("Carl"); ListIterator<String> iterator = staff.listIterator(); iterator.next(); iterator.add("Juliet"); iterator.add("Tom"); System.out.println(staff); iterator.set("AAA"); System.out.println(staff); //多次调用 add 依次把元素添加到该迭代器位置之前 //[Amy, Juliet, Tom, Bob, Carl] } @Test public void test2(){ var a = new LinkedList<String>(); a.add("Amy"); a.add("Carl"); a.add("Erica"); var b = new LinkedList<String>(); b.add("Bob"); b.add("Doug"); b.add("Frances"); b.add("Gloria"); ListIterator<String> aIter = a.listIterator(); Iterator<String> bIter = b.iterator(); while(bIter.hasNext()){ if(aIter.hasNext()){ aIter.next(); } aIter.add(bIter.next()); System.out.println(a); } bIter = b.iterator(); while(bIter.hasNext()){ bIter.next(); if(bIter.hasNext()){ bIter.next(); bIter.remove(); } } System.out.println(b); a.removeAll(b); System.out.println(a); } }
[Amy, Bob, Carl, Erica] [Amy, Bob, Carl, Doug, Erica] [Amy, Bob, Carl, Doug, Erica, Frances] [Amy, Bob, Carl, Doug, Erica, Frances, Gloria] [Bob, Frances] [Amy, Carl, Doug, Erica, Gloria]
ArrayList
相比于ArrayList,Vector所有的方法都是同步的,可以安全的从两个线程访问一个Vector对象。但是ArrayList是不同步的。
装填因子
散列表中所含元素的个数和散列表大小的比值
这篇关于JavaCoreTechnology_Day10.11的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南