`
南瓜猿
  • 浏览: 44386 次
  • 性别: 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  
 

相关推荐

    setuptools-58.0.3.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    变压器DGA溶解气体数据(357组)

    包含六种故障类型: 中低温过热 高温过热 低能放电 高能放电 局部放电 正常 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111需要直接下载就可

    电抗器设计软件.zip

    电抗器设计软件

    base.apk

    base.apk

    SM4-CTS代码实现及基本补位示例代码

    代码参照openssl-3.3.0-alpha1,可独立运行。示例包含块加密,基本补位方式示例

    setuptools-60.3.0.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    setuptools-59.4.0.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    永宏 PLC例程17个.zip

    永宏 PLC例程17个

    电器工程配料及预算软件.zip

    电器工程配料及预算软件

    基于CS通信的五子棋游戏GoBang.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    python飞机大战Python_Airplane_War.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    setuptools-66.1.1.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    飞机大战PlaneGame.zip

    五子棋游戏想必大家都非常熟悉,游戏规则十分简单。游戏开始后,玩家在游戏设置中选择人机对战,则系统执黑棋,玩家自己执白棋。双方轮流下一棋,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【技术】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    电气计算表格及小软件.zip

    电气计算表格及小软件

    ONNX模型转 TensorRT logging.h

    logging.h

    松下PLC例程55个.zip

    松下PLC例程55个

    setuptools-65.0.1.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    母亲节祝福html源码.pdf

    母亲节祝福html源码

    Theano-0.10.0b2.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    变压器铁心计算软件.zip

    变压器铁心计算软件

Global site tag (gtag.js) - Google Analytics