如何实现用java语言读取二进制文件的内容解析后存储在链表里

现在有一个二进制文件,用java实现读取二进制文件。这个二进制文件包含了6万多条的道路相关信息。我想实现的是把这6万多条道路信息解析后,每一条道路信息存放在一个链表上的一个节点中。每一条道路信息解析后包括有4个Int型数据,一个String 型数据。我刚开始学java,对用java实现链表不是很了解。我看了一下书,用java实现链表,每个链表的节点只能储存一种类型的数据。我记得之前用C语言实现链表,每个链表上的节点是一个结构体啊,可以存储各种类型的数据。但对java我不是很清楚。求指导!或者给我提供一下其它思路。我要做的事把6万多条道路信息解析后,再按照某个关键字进行排序。除了用链表来实现还有什么其它方法?

第1个回答  2013-10-23
首先解释一下你说的“用java实现链表,每个链表的节点只能储存一种类型的数据。我记得之前用C语言实现链表,每个链表上的节点是一个结构体啊,可以存储各种类型的数据”java是高级语言肯定要比c语言灵活的多,java的链表是可以存储任何类型的数据的,这个数据类型可以是一个对象,这个类你就可以自定义了,把你说的4个int一个String都定义成类的属性,用这个类生成的一个对象就可以看做是一个道路信息,这个类就可以看做你说的结构体,这个肯定要比你用c语言实现要简单的多。关于其他的思路,java的存储集合数据的类型还是很多的,链表顺序读取的效率比较高,具体用什么还要看你用什么排序算法了。
写c语言你可能还是缺少了面向对象的思想,如果要学java多体会一下面向对象的思想。本回答被提问者采纳

Java语言没有指针,怎样实现链表?
链表的数据结构我们可以用类List来实现链表结构,用变量Head、Tail、Length、Pointer来实现表头。存储当前结点的指针时有一定的技巧,Pointer并非存储指向当前结点的指针,而是存储指向它的前趋结点的指针,当其值为null时表示当前结点是第一个结点,因为当删除当前结点后仍需保证剩下的结点构成链表,如果Pointer...

java怎么用链表实现
在Java中,对于链表的实现都是基于引用数据类型操作的。实现大致如下:定义节点类Node,节点的概念很重要,一个链表是由各各节点连接在一起组成的。在节点类Node中定义节点内容及指向下一节点的引用,再增加一个添加节点的方法即可完成链表实现。链表有很多种不同的类型:单向链表,双向链表以及循环链表。在...

java如何实现简单lru缓存机制?
这种方式下,操作逻辑清晰,但直接使用链表可能使读写操作的时间复杂度达到O(n)。优化实现为利用LinkedHashMap,它在默认情况下按照插入顺序排序,通过设置accessOrder=true,可实现按访问顺序排序,每个节点包含前驱和后继指针,便于快速调整节点位置。在实现LRUCache时,需通过LinkedHashMap的removeEldestEntry方...

JAVA单链表中结点类用private修饰,怎么用在链表类里?
在链表类中,我们将head属性也用private修饰,并提供对应的getter和setter方法来访问和修改head属性。在addNode方法中,我们首先判断链表是否为空,如果为空,直接将新节点作为头节点;否则,遍历链表找到尾节点并将新节点接在其后面。在traverse方法中,我们遍历整个链表并输出每个节点的值。使用时,可以创建...

java问题,链表跟顺序表到底有什么不同?顺序表我知道,但是为什么说链表读 ...
首先你要区分一下物理上的存储结构 与 逻辑上的数据结构 物理上的存储结构 链式存储结构 顺序存储结构 逻辑上的数据结构 线性数据结构 :单链表 双向链表 循环列表(栈 队列 ...)树:普通树 特殊树 查找表 : 静态查找表,动态查找表 图:有向图 ...任何逻辑上的数据结构要在计算机上表示时,都...

数据结构—栈(Stack)的原理以及Java实现以及后缀表达式的运算
Java的JVM就是采用的栈空间结构来进行运行时方法的调用的,方法的入栈和出栈类似于元素的入栈和出栈,只有栈顶的方法才算有效方法。Java的递归的调用,也依赖于栈空间的实现。3.2 栈的顺序存储结构简单实现 我们的JDK中已经有了栈的实现类,那就是Stack类,它的内部就是采用数组实现的。这里提供一个更加简单的实现。

java里的链表指的是什么?为什么需要链表?
1,后面接着是2,然后是3,是连续的.1,2,3,就是这个链表的节点,就是数据存放的地方 再通俗点.大学的校园生活:班级是这样的.1年1班,1年2班,...1年10班.班级就是节点,而班级里的学生,就是数据.他们是连续存储的.但是内存分分配不是连续的.有时间看下,<数据结构>书上写的...

求java基础习题!
此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要...

Java代码处理数据技巧(java代码处理数据技巧有哪些)
1.Java编程语言,即语法。 2.Java文件格式,即各种文件夹慎困握、文件的后缀。 3.Java虚拟机(JVM),即处理*.class文件的解释器。 4.Java应用程序接口(JavaAPI)。 二、零基础如何学习Java开发?需要掌握哪些技能?掌握静态方法和属性 静态方法和属性用于描述某一类对象群体的特征,而不是单个对象的特征。Java中大量应用...

JAVA怎么实现双向循环链表? 如果用LINKEDLIST,我只知道他有hasnext,ne...
LinkedList虽然接口是单项的,但内部实现是双向的。如下方法可以使用:Iterator<E> descendingIterator() 返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。for(Object o : list.descendingIterator()){ ... }

相似回答