1.arraylist与linkedList的区别和使用场景
先对比分析各自的优缺点:
Arraylist:
优点:因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的)
缺点:因为地址连续,所以插入和删除操作效率比较低
LinkedList:
优点:地址是任意的,所以在开辟内存空间的时候不需要等一个连续的地址,所以非常适合进行插入和删除的操作
缺点:查询操作性能比较低。
应用场景分析:
在需要随机访问的情况下,Arraylist优于LinkedList,因为LinkedList要从一端开始移动指针直到访问的元素位置。在需要增删操作的情况下,LinkedList又明显优于Arraylist,因为Arraylist每一次增删都要移动数据。
2.ArrayList与Vector的区别和使用场景
区别:Arraylist不是线程同步的,Vector是线程同步的。
在多线程中一般采用Vector,在单线程中一般采用ArrayList。
3.HashSet与TreeSet的使用场景
HashSet:在无序的排序时使用。
TreeSet:在需要根据内容的自然顺序进行排序时使用。
4.HashMap的使用场景
HashMap是用来存储具有键值对特征的数据,不保证存储顺序,不能重复。
可以用HashMap来做通讯录(用户名=联系号码)的存储,或者按员工号,学号之类的存储数据时使用。
5.使用数组,实现一个栈
class MyStack<E> {
void push(E e);//压入栈
E pop();//弹出栈
int size();//栈长度
E peek();//查看栈顶数据
}
import java.util.ArrayList; import java.util.List; import java.util.Stack; public class MyStack<E> { private int top; private int buttom; private int max; private int length; private int increment = 2; private Object[] stack ; public MyStack (int initCapacity) { = initCapacity; } public Object[] extend(){ Object[] dest = new Object[(int)(stack.length * increment)]; System.arraycopy(stack, 0, dest, 0, stack.length); return dest; } public boolean isEmpty() { return length == 0 ? true : false; } //压入栈 public void push(Object obj) { if(length >= stack.length){ stack = extend(); } stack[length] = obj; length ++; } //弹出栈 public Object pop() { if(isEmpty()){ throw new NullPointerException(); } length --; return stack[length]; } //栈长度 public int size() { return length; } //取出栈顶 public Object peek() { if(isEmpty()){ throw new NullPointerException(); } return stack[length-1]; } }
6.查资料,了解Hash算法,能够自定义一个HashSet
一开始感觉自定义一个HashSet应该不难,然后慢慢发现首先还得先自定义一个hashmap,更深入还得定义hashcode的算法,然后发现这是个很艰巨的任务…
查了好久的资料,了解了一些基本的概念,比如计算hashcode的算法思想,如何处理地址冲突的问题,原来加入了链表..最后找到了一篇博客,惊奇发现是mzd前辈写的…
http://java-mzd.iteye.com/blog/827523
自定义实现了hashmap,
看完之后感觉收获很大,但是又感慨自己数据结构和算法的不足,因为下午还有课,所以先放置在此,这几天争取理解透彻并能够自己实现。
相关推荐
根据提供的信息,我们可以总结并详细解释关于Java集合框架的一些关键知识点。这些知识点主要涉及Java集合框架中的各种数据结构,如List、Set、Map等,并深入探讨了它们在实际应用中的特性与用途。 ### Java集合框架...
#### 一、集合框架概述 ##### 1.1.1 容器简介 在Java编程中,容器是用于存储和管理对象集合的重要工具。当我们处理大量的对象时,比如存储多个员工的信息,仅仅依赖于基本的数据结构(如数组)可能不足以高效地...
JavaEE框架是企业级应用程序开发的核心工具集合,它包含了多种技术,如Servlet、JSP、EJB、JMS等,以及一系列的框架,用于简化开发流程并提高代码的可维护性和可扩展性。本篇文章将重点围绕SSM(Spring、SpringMVC、...
### JavaEE框架总结 #### 框架定义与学习重点 - **框架定义**:框架是一种半成品形式的代码集合,旨在提供一个基础结构供开发者在此基础上构建具体的应用程序。框架通常封装了一些通用功能,使得开发者能够重用...
Java API 学习总结 Java 是一种广泛使用的面向对象的编程语言,它的API(Application Programming Interface)提供了大量的类和接口,使得开发者能够高效地构建各种应用程序。本文将重点关注Java的基础知识,特别是...
### Struts2框架学习笔记整理 #### 一、Struts2框架概述 ##### 1.1 Struts2框架定义 Struts2是一个基于MVC(Model-View-Controller)架构模式的开源Java web应用框架,它能够帮助开发者构建可扩展且易于维护的...
学习Java包括基础语法、类与对象、接口、异常处理、集合框架等内容。对于大一到大二的学生,可能还会接触到多线程和I/O流等进阶主题。 2. **C语言**: C是低级编程语言,常用于系统编程和嵌入式开发。它让程序员能够...
本篇文章将详细讲解Java集合框架中的核心类,并探讨其使用场景和相关数据结构。 首先,Java集合框架的核心接口包括List、Set和Map。List接口代表有序的集合,元素可以重复,例如ArrayList和LinkedList。ArrayList是...
"notes学习笔记总结"可能是一个关于如何高效记录、整理和利用学习笔记的资源集合,旨在帮助用户提升个人学习效率和知识管理能力。这个压缩包文件"notes-master"很可能包含了多种格式的文档,如文本文件、PDF、...
总结,【Java学习记录】涵盖了从基础语法到高级特性的广泛内容,包括但不限于数据类型、控制结构、面向对象、异常处理、集合框架、多线程、I/O流、网络编程以及标准库的使用。深入学习并实践这些知识点,将有助于...
总结,这个“个人机器学习记录”压缩包很可能包含了一个完整的学习路径,从基础理论到实际应用,涵盖了许多机器学习的关键知识点。对于想要深入学习机器学习的人来说,这是一个宝贵的资源,可以从中汲取知识,逐步...
Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 ...
SDTM学习总结 SDTM(Study Data Tabulation Model)是一种数据模型,旨在提供一个通用的框架来组织和描述临床试验数据。下面是SDTM学习总结的知识点: 1. SDTM数据集与一般数据集的区别: SDTM数据集与一般数据集...
### Java框架面试题总结 #### Struts篇 **1. Struts的工作流程** Struts框架是一种基于MVC(Model-View-Controller)架构模式的Java Web应用框架。它的工作流程如下: - **客户端发起请求**:客户端通过浏览器或...
4. **Spring AOP**:在Spring框架内实现了AOP,可以创建自定义的切面,用于事务管理、日志记录等功能。 5. **数据访问抽象**:Spring支持JDBC、ORM(Object-Relational Mapping)框架,如Hibernate和MyBatis,简化了...
标题中的“个人JavaSE学习笔记”表明了这份文件是某人通过观看圣思园视频课程对Java标准版(Java SE)的学习总结。Java SE是Java技术的核心,提供了运行Java应用程序所需的基础类库。从描述中可以得知,这份笔记使用...
总的来说,SDTMIG的学习和应用有助于临床试验数据的规范化,简化了数据管理,提高了数据的可解释性和审查效率,从而有助于监管机构和研究者更有效地评估药物的安全性和有效性。对于临床研究领域来说,理解和掌握SDTM...
根据提供的文档内容,以下是对EBS R12 GL(General Ledger)模块学习总结的关键知识点的详细解释: ### EBS R12 GL 模块基础知识 #### 定义职责 - **路径**: System Administrator > Security > Responsibility > ...
【标题】"2月1号学习总结文件_resulttke_c#实例_" 提供的是一个关于C#编程语言的实例学习资料,重点在于“resulttke”可能是某种特定的技术或者项目名称,而“c#实例”则表明内容侧重于C#语言的实际应用。...
学习/总结/成长/记录(2018.2.28 - 2023.2.28) :heart_suit:Java 基础 锁 - 未学习 JVM - 待整理 容器 多线程 集合(底层源码) ArrayList LinkedList Vector HashMap ComcurrentHashMap LinkedHashMap Set IO 集合 ...