关于java中指针的概念
今天寡人遇到一个问题,扫描非关系数据库中的图(由node和rel组成),将其转化成由寡人自定义的gnode和gedge组成的图。
gnode类包含结点的id,label和包含此gnode的gedge的链表;gedge类包含gnode类型的startnode和endnode。
寡人伏案敲打键盘,不到一盏灯的时间里便写出了一个递归的深度优先遍历算法,心中不免感到被自己的才智深深的折服。
但寡人发觉有哪里不太对,寡人在纸上画一例以试之,发现果然有问题:
为避免重复扫描相同的node,在处理此node之前必先探测其是否存在于转化完成的gnode链表中,若存在则直接return此gnode,不存在才进行后续处理;
如前所述,gnode包含一个gedge链表,在生成其中每个gedge时,必先有其startnode和endnode。显然,此gnode是其中一个,另一个我们要对这个rel连接的node调用本算法得到,谓之递归。
于是,为了探测此node可曾被扫描,我们需要有当前已生成的gnode列表;在将此gnode添加到生成的gnode列表前,我们需要对其连接的node调用此算法得到它的gedge的链表。
鸡生蛋?蛋生鸡?
寡人陷入了沉思。
寡人C语言学识尚可,这种情况下,如果使用C(C++)语言,寡人定采用指针链表实现gnode列表:
在得到当前node的id和label后,生成对应的gnode,其gedge链表置为null。将此gnode列表的下一元素指向此gnode,即添加到转化完成的gnode链表。实则,我们此时还未得到此gnode的gedge链表,但我们有了id和label——探测一个node可曾被扫描的完备条件。在我们得到gedges后,更新此gnode的属性,gnode列表中的它自然也就更新了。
java中如何实现指针数组?
寡人开始搜goo罗gle天下百姓的建议
以上都是废话
孤看了这个博客http://www.ticmy.com/?p=174,豁然开朗:孤不懂对象。
孤编了个小程序试之,爱卿们且看:
package a2;
import java.util.LinkedList;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedList<Shit> c=new LinkedList<Shit>();
Shit d=new Shit();
d.a=0;d.b="oh,shit!";
c.add(d);
d.a=1;d.b="omg!";
for(Shit a:c){
System.out.println(a.a+" "+a.b);
}
}
}
class Shit{
public int a;
public String b;
}
输出结果是: 1 omg
只有new才会分配一个新的地址空间,List的add,只是添加了一个对被add对象的引用。修改这个对象,List中的它当然会改变,因为“它”就是“它”啊……
孤被自己蠢哭了。
孤要搞懂对象。
关于java中指针的概念的更多相关文章
- Java中“指针”的解释以及对“引用”的理解
Java中"指针"的解释以及对"引用"的理解 初学Java面对对象编程,对于一些概念还真的有点难以理解,主要是因为不由自主的联系到以前学过的C语言知识,时不时的 ...
- java 中包的概念,常量,静态与继承
一.包的概念:创建,使用. 1.新建包: 最上面一行,之前不能再有其它代码了. package 包名; 注意:包名一般都有命名的规范.例如:com.itnba.maya.zy(从大到小). 2.使用包 ...
- java中接口的概念及使用(补充final修饰符的使用)
接口 初期理解,可以是一个特殊的抽象类 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示 class 用于定义类 interface 用于定义接口 接口定义时,格式特点: 1.接口中常见的 ...
- Java中的锁概念
掌握Java中锁是Java多线程编程中绕不开的知识,只有知道理解Java各种锁才能在编码过程中灵活运用,写出更高效的多线程程序.而理解掌握锁的第一步,可从宏观上对比理解一下各种锁概念. 公平锁/非公平 ...
- java 中接口的概念
接口接口在java中是一个抽象的类型,是抽象方法的集合,接口通常使用interface来声明,一个类通过继承接口的方式从而继承接口的抽象方法.接口并不是类,编写接口的方式和类的很相似,但是他们属于不同 ...
- java中引用的概念
强引用(StrongReference) 强引用就是指在程序代码之中普遍存在的,比如下面这段代码中的object和str都是强引用: 1 2 Object object = new Object(); ...
- java 中的包概念
Java 中的包package, 就是电脑中的文件夹.我们平时在工作中,文件太多时,都会新建文件夹进行分类管理,java 中的包也是类似的道理,当我们的类太多时,也需要进行分类管理,这时我们就会把类文 ...
- java中继承的概念
继承是类的三大特性之一,是java中实现代码重用的重要手段之一. java中只支持单继承,即每个类只能有一个父类. 继承表达的是is a的关系,或者说一种特殊和一般的关系. ...
- Java中的引用概念
Java对对象和基本的数据类型的处理是不一样的.和C语言一样,当把Java的基本数据类型(如int,char,double等)作为入口参数传给函数体的时候,传入的参数在函数体内部变成了局部变量,这个局 ...
随机推荐
- BZOJ4340:[BJOI2015]隐身术(后缀数组,ST表,DFS)
Description 给定两个串A,B.请问B中有多少个非空子串和A的编辑距离不超过K? 所谓“子串”,指的是B中连续的一段.不同位置的内容相同的子串算作多个. 两个串之间的“编辑距离”指的是把一个 ...
- [Luogu 3707] SDOI2017 相关分析
[Luogu 3707] SDOI2017 相关分析 前言 Capella 和 Frank 一样爱好天文学. 她常在冬季的夜晚,若有所思地望着东北方上空的五边形中,最为耀眼的一个顶点. 那一抹金黄曾带 ...
- linux下apache中httpd.conf的ServerAdmin 是设置的什么?
<VirtualHost 127.0.0.1:80> ServerAdmin ******@****.com DocumentRoot /home/aaa/sss ServerName s ...
- IIS7.5全站301跳转,内页+带参数url,这才是真正的全站跳转
说好的转型安全领域,可是我还是忍不住要给大家分享这个教程.因为这个问题很常见,大部分人都遇到了(可能你没注意),困扰了我很久,相信这是一篇真正适合你的IIS301跳转教程. 背景 说到301跳转,作为 ...
- OpenCV——图像金字塔和图片尺寸缩放
- JAVA 框架hibernate (三)(数据库更新丢失)
一.场景: 我们在并发操作数据库同一个字段,比如:name:tom age:22这条数据.有2个同时进行操作.A操作该数据的name改成admin,B操作这条数据的age改成:35.然后A先把数据更 ...
- 第三次作业:结对编程--实现表格在APP的导入和显示
031302517 031302319 ps:共同完成一篇随笔,文章中的第一人称我(517),队友(319) 一.功能分析+实现思路+结队讨论 这里我将功能分析和实现思路还有结对过程中的一些讨论结合在 ...
- 20155218《网络对抗》Exp8 Web基础
20155218<网络对抗>Exp8 Web基础 1.基础问题回答 1.什么是表单? 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等) ...
- 20155302《网络对抗》Exp4 恶意代码分析
20155302<网络对抗>Exp4 恶意代码分析 实验要求 •是监控你自己系统的运行状态,看有没有可疑的程序在运行. •是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工 ...
- [转]Linux 系统挂载数据盘
原文地址:http://blog.csdn.net/jeep_ouc/article/details/39289643 *Linux的云服务器数据盘未做分区和格式化,可以根据以下步骤进行分区以及格式化 ...