众所周知,数据结构是算法的基础。从事程序设计工作的人来说,我们在日常编程的编程过程中,我们都会有意无意的接触到一些数据结构和算法的知识。为了能够更好的对于程序进行优化,所以数据结构相关的知识必须有所了解。学完了Java面向对象的基础知识后,我们可以更深入的了解Java数据结构算法的基础知识,进而提高我们的编程思维和解决问题的思路。接下来,我将介绍Java数据结构相关的知识。
Java数据是我们入门学的第一个最基本的数据结构,这是一个常用的线性储存结构。
数组类型[] 数组名=new 数组类型[储存维度];
数组类型[] 数组名={初始化量1,初始化量2};
List<Interger> array=new ArrayList<>();//初始化
array.add(value);//数组元素添加
class ListNode{
int val; //节点值
ListNode next; //后续节点使用
ListNode(int x){val=x;}
}
ListNode n1=ListNode(value1);
ListNode n2=ListNode(value2);
ListNode n3=ListNode(value3);
n1.next=n2;
n2.next=n3;
众所周知,数据结构中的数据关系除了一对一的关系外,还存在着其他的关系,树和图就为了描述这种数据关系而存在的。其中,树主要描述数据之间一对多的关系。而图主要描述数据间的多对多的关系。树和图的数据结构在实际运用中具有很重要的地位,下面我将详细介绍树和图用Java语言怎么描述出来的。
class TreeNode{
int val;//结点值
TreeNode left;//左节点
TreeNode right;//右节点
TreeNode(int x){val=x;}
}
TreeNode n1=new TreeNode(value1);
TreeNode n2=new TreeNode(value2);
TreeNode n3=new TreeNode(value3);
n1.left=n2;
n1.right=n3;
int vertices={value1,value2,value3,value4,value5};//创建节点
int[][] edges={{0,1,1,1,1}, //创建节点之间的连接状态
{1,0,0,1,0},
{1,0,0,0,1},
{1,1,0,0,1},
{1,0,1,1,0}}
int vertices={value1,value2,value3,value4,value5};//创建节点
List<List<Integer>> edges=new ArrayList<>();
List<Integer>edge_1=New ArrayList<>(ArrayList.asList(value2,value3));
edges.add(edge_1);
这两个数据结构在计算机底层内部应用十分广泛,Java的虚拟机就是利用堆来存储数据的。因此这两个数据结构依旧很重要,下面我将用Java语言来描述这两个数据结构。
Map<String,Interge> dic=new HashMap<>();//哈希表的创建
dic.put(key,value);//数据存储
dic.get(key,value);//数据取出
queue<Integer> heap=new priorityQueue<>(); //堆元素节点创建
heap.add();//堆的元素节点添加
heap.poll();//堆的元素节点移除
栈和队列都是特殊的线性数据结构,两者的不同在于其数据存取方式的不同。栈的存取方式是先进后出,然而队列的数据存取方式是先进先出。两者在数据结构与算法的应用中有着不可替代的作用。下面我将介绍怎么使用Java语言描述栈和队列的原理。
stack<Integer> stack= new stack <>();
stack.push()
stack.pop();
LinkedList<Integer> stack=new LinkList<>();
stack。addlast(元素);
stack.removelast();
Queue<Integer> queue=new LinkList<>();
queue.offer();//入队
queue.poll();//出队