`
南瓜猿
  • 浏览: 45096 次
  • 性别: Icon_minigender_1
  • 来自: 长沙市
社区版块
存档分类
最新评论

集合框架学习总结记录

阅读更多

1.arraylistlinkedList的区别和使用场景

先对比分析各自的优缺点:

Arraylist

优点:因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的)

缺点:因为地址连续,所以插入和删除操作效率比较低        

LinkedList

优点:地址是任意的,所以在开辟内存空间的时候不需要等一个连续的地址,所以非常适合进行插入和删除的操作

缺点:查询操作性能比较低。

应用场景分析:

在需要随机访问的情况下,Arraylist优于LinkedList,因为LinkedList要从一端开始移动指针直到访问的元素位置。在需要增删操作的情况下,LinkedList又明显优于Arraylist,因为Arraylist每一次增删都要移动数据。

 

2.ArrayListVector的区别和使用场景

区别:Arraylist不是线程同步的,Vector是线程同步的。

在多线程中一般采用Vector,在单线程中一般采用ArrayList

 

3.HashSetTreeSet的使用场景

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

 

看完之后感觉收获很大,但是又感慨自己数据结构和算法的不足,因为下午还有课,所以先放置在此,这几天争取理解透彻并能够自己实现。

 

4
4
分享到:
评论
1 楼 Donshion 2015-10-27  
 

相关推荐

    Java集合框架常见面试题夜间阅读版.pdf

    根据提供的信息,我们可以总结并详细解释关于Java集合框架的一些关键知识点。这些知识点主要涉及Java集合框架中的各种数据结构,如List、Set、Map等,并深入探讨了它们在实际应用中的特性与用途。 ### Java集合框架...

    javaee框架总结 文档总结, ssm ssh快速上手

    JavaEE框架是企业级应用程序开发的核心工具集合,它包含了多种技术,如Servlet、JSP、EJB、JMS等,以及一系列的框架,用于简化开发流程并提高代码的可维护性和可扩展性。本篇文章将重点围绕SSM(Spring、SpringMVC、...

    JavaEE框架总结

    ### JavaEE框架总结 #### 框架定义与学习重点 - **框架定义**:框架是一种半成品形式的代码集合,旨在提供一个基础结构供开发者在此基础上构建具体的应用程序。框架通常封装了一些通用功能,使得开发者能够重用...

    javaAPI学习总结

    Java API 学习总结 Java 是一种广泛使用的面向对象的编程语言,它的API(Application Programming Interface)提供了大量的类和接口,使得开发者能够高效地构建各种应用程序。本文将重点关注Java的基础知识,特别是...

    struts2框架学习笔记整理

    ### Struts2框架学习笔记整理 #### 一、Struts2框架概述 ##### 1.1 Struts2框架定义 Struts2是一个基于MVC(Model-View-Controller)架构模式的开源Java web应用框架,它能够帮助开发者构建可扩展且易于维护的...

    计算机大一到大二初级阶段学习总结文档【JAVA,C,C#,HTML,数据库】

    学习Java包括基础语法、类与对象、接口、异常处理、集合框架等内容。对于大一到大二的学生,可能还会接触到多线程和I/O流等进阶主题。 2. **C语言**: C是低级编程语言,常用于系统编程和嵌入式开发。它让程序员能够...

    java集合类学习汇总

    本篇文章将详细讲解Java集合框架中的核心类,并探讨其使用场景和相关数据结构。 首先,Java集合框架的核心接口包括List、Set和Map。List接口代表有序的集合,元素可以重复,例如ArrayList和LinkedList。ArrayList是...

    notes学习笔记总结

    "notes学习笔记总结"可能是一个关于如何高效记录、整理和利用学习笔记的资源集合,旨在帮助用户提升个人学习效率和知识管理能力。这个压缩包文件"notes-master"很可能包含了多种格式的文档,如文本文件、PDF、...

    Java学习记录.rar

    总结,【Java学习记录】涵盖了从基础语法到高级特性的广泛内容,包括但不限于数据类型、控制结构、面向对象、异常处理、集合框架、多线程、I/O流、网络编程以及标准库的使用。深入学习并实践这些知识点,将有助于...

    个人机器学习记录.zip

    总结,这个“个人机器学习记录”压缩包很可能包含了一个完整的学习路径,从基础理论到实际应用,涵盖了许多机器学习的关键知识点。对于想要深入学习机器学习的人来说,这是一个宝贵的资源,可以从中汲取知识,逐步...

    一份超级详细的Java面试题【大厂面试真题+Java学习指南+工作总结】.zip

    Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 ...

    SDTMIG学习总结.docx

    SDTM学习总结 SDTM(Study Data Tabulation Model)是一种数据模型,旨在提供一个通用的框架来组织和描述临床试验数据。下面是SDTM学习总结的知识点: 1. SDTM数据集与一般数据集的区别: SDTM数据集与一般数据集...

    Java框架面试题总结

    ### Java框架面试题总结 #### Struts篇 **1. Struts的工作流程** Struts框架是一种基于MVC(Model-View-Controller)架构模式的Java Web应用框架。它的工作流程如下: - **客户端发起请求**:客户端通过浏览器或...

    SSM框架知识点总结

    4. **Spring AOP**:在Spring框架内实现了AOP,可以创建自定义的切面,用于事务管理、日志记录等功能。 5. **数据访问抽象**:Spring支持JDBC、ORM(Object-Relational Mapping)框架,如Hibernate和MyBatis,简化了...

    个人JavaSE学习笔记(观看圣思园的视频总结下来的)

    标题中的“个人JavaSE学习笔记”表明了这份文件是某人通过观看圣思园视频课程对Java标准版(Java SE)的学习总结。Java SE是Java技术的核心,提供了运行Java应用程序所需的基础类库。从描述中可以得知,这份笔记使用...

    SDTMIG学习总结.doc

    总的来说,SDTMIG的学习和应用有助于临床试验数据的规范化,简化了数据管理,提高了数据的可解释性和审查效率,从而有助于监管机构和研究者更有效地评估药物的安全性和有效性。对于临床研究领域来说,理解和掌握SDTM...

    EBS GL 学习总结

    根据提供的文档内容,以下是对EBS R12 GL(General Ledger)模块学习总结的关键知识点的详细解释: ### EBS R12 GL 模块基础知识 #### 定义职责 - **路径**: System Administrator &gt; Security &gt; Responsibility &gt; ...

    2月1号学习总结文件_resulttke_c#实例_

    【标题】"2月1号学习总结文件_resulttke_c#实例_" 提供的是一个关于C#编程语言的实例学习资料,重点在于“resulttke”可能是某种特定的技术或者项目名称,而“c#实例”则表明内容侧重于C#语言的实际应用。...

    java8源码-FiveYears:学习/总结/成长/记录

    学习/总结/成长/记录(2018.2.28 - 2023.2.28) :heart_suit:Java 基础 锁 - 未学习 JVM - 待整理 容器 多线程 集合(底层源码) ArrayList LinkedList Vector HashMap ComcurrentHashMap LinkedHashMap Set IO 集合 ...

Global site tag (gtag.js) - Google Analytics