博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中一些常用的类,包,接口
阅读量:4557 次
发布时间:2019-06-08

本文共 3448 字,大约阅读时间需要 11 分钟。

类:1..Object 2..String 3..System 4..file 5..FileInputStream 包:1.java.lang包 2.包 3.java.swt包 4.包 5.java.sql包 接口:1..List
2..Map
3.java.util.Iterator
4.java.sql.CallableStatement 5.java.lang.Comparable
数组和链表的区别:

数组结构:

       数组结构在通过索引进行查询数据时效率比较高,而对于数组插入和删除操作,则效率会比较低,在第一个位置进行插入数据,其余数据就需要依次向后移动,而第一个数据进行删除,则需要所有数据全部向前移,这样的话,就会推出第二种结构,链表结构。

简单的链表:为了保证数据插入和删除,不会影响其他数据的移动,保证线性开销,所以就引出了链接。每个表都不会连续进行存储。

     链表是由一系列节点组成的,每个节点都会有一个链点,这就是next链,而next链则会执行下一个node的引用,所以我们在插入或者删除的时候,需要该表链表next链的指向地址即可,每个节点不需要内存进行连续存储,这样会减小删除和插入的线性开销。

 

链表结构主要分为两种链表,单向链表和双向链表 ,即单向链表只有一个next链,而双向链表会有next链和pre链。

 

 

实现ArrayList:(ArrayList其实是对数组的动态扩充)

 

package com.baoqiang.list;
 
import java.util.Iterator;
 
public class MyArrayList<E> implements Iterable<E>{
 
private static final int DEFAULT_CAPACITY = 10;
 
private int theSize;
 
private E[] theItems;
 
public E set(int index, E newVal){
if(index < 0 || index >= size()){
throw new ArrayIndexOutOfBoundsException();
}
E old = theItems[index];
theItems[index] = newVal;
return old;
}
 
public E get(int index){
if(index <0 || index >= size()){
throw new ArrayIndexOutOfBoundsException();
}
return theItems[index];
}
 
 
public boolean isEmpty(){
return size() == 0;
}
 
public void trimToSize(){
ensureCapacity(theSize);
}
 
public void clear(){
theSize = 0;
theItems = (E[]) new Object[DEFAULT_CAPACITY];
}
 
public void ensureCapacity(int newCapacity){
if(newCapacity < theSize){
return;
}
E[] old = theItems;
theItems = (E[]) new Object[newCapacity];
for(int i=0; i<size(); i++){
theItems[i] = old[i];
}
}
 
public int size(){
return theSize;
}
 
public void add(E newVal){
add(size(),newVal);
}
 
public void add(int index,E newVal){
if(theItems.length == size()){
ensureCapacity(size()*2+1);
}
for(int i=theSize; i>index; i--){
theItems[i] = theItems[i-1];
}
theItems[index] = newVal;
theSize ++;
}
 
public E remove(int index){
E old = theItems[index];
for(int i=index;i<size();i++){
theItems[index] = theItems[index+1];
}
theSize--;
return old;
}
 
 
public Iterator<E> iterator() {
return new Iterator<E>(){
 
private int current = 0;
 
public boolean hasNext() {
return current < size();
}
 
public E next() {
if(!hasNext()){
throw new java.util.NoSuchElementException();
}
return theItems[current++];
}
 
public void remove() {
MyArrayList.this.remove(--current);
}
 
};
}
 
}
java中常用的数据结构:
数据结构: 		①数组 (Array) 			在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数 			据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组 			元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指 			针数组、结构数组等各种类别。 		②栈 (Stack) 			栈是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后 			的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。 		③队列 (Queue) 			一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行 			插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 		④链表 (Linked List) 			一种物理存储单元上非连续、非顺序的,数据元素的是通过链表中的指针链接次序实现的。 			链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分: 			一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 		⑤树 (Tree) 			树是包含n(n>0)个结点的有穷集合K,且在K中定义了一个关系N,N满足 以下条件: 			(1)有且仅有一个结点 k0,他对于关系N来说没有前驱,称K0为树的根结点。简称为根(root) 			(2)除K0外,k中的每个结点,对于关系N来说有且仅有一个前驱。 			(3)K中各结点,对关系N来说可以有m个后继(m>=0)。 		⑥堆 (Heap) 			在中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指 			二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。 		⑦图 (Graph) 			图是由结点的有穷集合V和边的集合E组成。其中,为了与加以区别,在图结构中常常将结点称为顶点, 			边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有。 		⑧散列表 (Hash) 			若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称 			这个对应关系f为(Hash function),按这个思想建立的表为散列表。

转载于:https://www.cnblogs.com/leilong/p/8632164.html

你可能感兴趣的文章
一些容易出错的细节
查看>>
XE: Changing the default http port
查看>>
IDEA 用了maven后的 智能提示 不出现问题,项目的依赖包没有加载依赖库中的问题。...
查看>>
MySQL一查就会
查看>>
luogu 1273有线电视网
查看>>
android之RefBase
查看>>
将多层级xml解析为Map
查看>>
从零开始学Go之容器(四):列表
查看>>
结对作业--项目之需求分析
查看>>
转 Learning To Rank之LambdaMART的前世今生
查看>>
继续(三)
查看>>
codeforces365B
查看>>
Xcode 代码块
查看>>
浅谈iOS7 AVFoundation 二维码扫描
查看>>
[CLR via C#]17. 委托
查看>>
【目录】集合框架目录
查看>>
SQL SERVER行转换列及PIVOT
查看>>
no pointer in java
查看>>
iperf安装与使用
查看>>
【斜率DP】BZOJ 1010:玩具装箱
查看>>