在数据结构中存储对象

数组列表

  在java.util包中有一个类可以实现数组所有的功能,而且没有数组的大小限制,它就是ArrayList。

  数组列表是一个存储同一类对象或具有共同超类的对象的数据结构。在程序运行时,列表可以根据需要调整大小。

  创建数组列表是最简单的方法是调用其不带参数的构造函数。

  ArrayList servants = new ArrayList();

  在创建数组列表时,可以指定一个初始的容量(大小),这为列表能存放多少个元素提供了指导。该容量作为一个整型参数传递给构造函数

  ArrayList servants = new ArrayList(30);

  ArrayList<String> servants = new ArrayList<String>();

 1 import java.awt.*;
 2 import java.util.*;
 3
 4
 5 public class Battlepoint {
 6     ArrayList<Point> targets = new ArrayList<Point>();
 7
 8     public Battlepoint() {
 9         //create targets to shoot at
10         createTargets();
11         //display the game map
12         showMap();
13         //shoot at three points
14         shoot(7, 4);
15         shoot(3, 3);
16         shoot(9, 2);
17         //display the map again
18         showMap();
19     }
20
21     private void showMap() {
22         System.out.println("\n   1  2  3  4  5  6  7  8  9");
23         for (int column = 1; column < 10; column++) {
24             for (int row = 1; row < 10; row++) {
25                 if (row == 1) {
26                     System.out.print(column + " ");
27                 }
28                 System.out.print(" ");
29                 Point cell = new Point(row, column);
30                 if (targets.indexOf(cell) > -1) {
31                     //a target is at this position
32                     System.out.print("X");
33                 } else {
34                     //no target is here
35                     System.out.print(".");
36                 }
37                 System.out.print(" ");
38             }
39             System.out.println();
40         }
41         System.out.println();
42     }
43
44     private void createTargets() {
45         Point p1 = new Point(5, 9);
46         targets.add(p1);
47         Point p2 = new Point(4, 5);
48         targets.add(p2);
49         Point p3 = new Point(9, 2);
50         targets.add(p3);
51     }
52
53     private void shoot(int x, int y) {
54         Point shot = new Point(x, y);
55         System.out.print("Firing at (" + x + "," + y + ")...");
56         if (targets.indexOf(shot) > -1) {
57             System.out.println("you sank my battlepoint!");
58             targets.remove(shot);
59         } else {
60             System.out.println("miss.");
61         }
62     }
63
64     public static void main(String[] arguments) {
65         new Battlepoint();
66     }
67 }

时间: 2024-12-21 08:02:12

在数据结构中存储对象的相关文章

Unity3D学习(二):使用JSON进行对象数据的存储读取

前言 前段时间完成了自己的小游戏Konster的制作,今天重新又看了下代码.原先对关卡解锁数据的存储时用了Unity自带的PlayerPref(字典式存储数据). 读取关卡数据的代码: void Awake () { foreach(Transform Child in transform) //Update Level Lists { //Get Level's Name string levelname = Child.name.Substring(0,1); //Load level da

【iOS开发-75】iOS数据存储的三种简单方式:plist、preference以及用NSCoding存储对象

实际开发中,存储数据主要是用SQLite.而在练习中,我们主要用如下三种存储方式. (1)利用plist存储简单地NSString.NSArray.NSDictionary等. (2)利用preference存储,和上面的类似,存储的是简单的数据,本质上还是一个plist文件. (3)利用NSCoding存储对象这些复杂的数据,本质上是一个data文件,需要被存储的类遵守NSCoding协议并实现init和encode方法. 代码如下: --在ViewController.m中 - (void)

flask中的CBV , flask-session在redis中存储session , WTForms数据验证 , 偏函数 , 对象里的一些小知识

flask中的CBV , flask-session在redis中存储session , WTForms数据验证 , 偏函数 , 对象里的一些小知识 flask中的CBV写法 后端代码 # 导入views from flask import Flask, render_template, views, request app = Flask(__name__) # CBV写法 class Login(views.MethodView):       # 定义一个类,不用装饰器,继承了Method

关于内存中栈和堆的区别(非数据结构中的堆和栈,区别)

本文转载自:http://blog.csdn.net/fenghuayoushi/article/details/6074666 ----------------------------------------------------------------------------------------------------------------------- 下面内容转自:http://www.cnblogs.com/gesenkof99/archive/2009/04/14/14356

数据结构中的堆和栈 与 内存分配中的堆区和栈区 分析

比較全面的总结了诸多版本号,知识无国界.感谢各位的辛勤劳作. 在计算机领域,堆栈是一个不容忽视的概念,我们编写的C/C++语言程序基本上都要用到.但对于非常多的初学着来说,堆栈是一个非常模糊的概念. (1) 数据结构的栈和堆 首先在数据结构上要知道堆栈,虽然我们这么称呼它,但实际上堆栈是两种数据结构:堆和栈. 堆和栈都是一种数据项按序排列的数据结构. 栈就像装数据的桶或箱子 我们先从大家比較熟悉的栈说起吧.它是一种具有后进先出性质的数据结构,也就是说后存放的先取.先存放的后取.这就如同我们要取出

SSAS系列&mdash;&mdash;【02】多维数据(维度对象)

原文:SSAS系列——[02]多维数据(维度对象) 1.维度是什么? 数学中叫参数,物理学中是独立的时空坐标的数目.0维是一点,1维是线,2维是一个长和宽(或曲线)面积,3维是2维加上高度形成体积面.在物理学上时间是第四维,与三个空间维不同的是,它只有一个,且只能往一方向前进. 图一 MSDN中关于维度的概念 2.服务器对象的内容? 包括数据源.数据视图.数据库对象.安全角色和程序集.前4个都不难理解.关于程序集的概念,还需加强一下,程序集可为两种不同的类型:COM 和 CLR.CLR 程序集是

数据结构中常用树型结构简介

B树.B-树.B+树.B*树.红黑树rbtree 二叉排序树.trie树Double Array 字典查找树 B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中:否则,如果查询关键字比结点关键字小,就进入左儿子:如果比结点关键字大,就进入右儿子:如果左儿子或右儿子的指针为空,则报

在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。

作者:邵盛松 2009-09-05 前言 1关于的BLOB(Binary)数据的存储和读取功能主要参考了MSDN上的一篇<AppendChunk and GetChunk Methods Example (VC++)>,原文地址是http://msdn.microsoft.com/en-us/library/ms807920.aspx.还有www.vckbase.com上有一篇文章<使用ADO实现BLOB数据的存取 -- ADO开发实践之二>,原文地址是http://www.vck

iOS数据持久化存储

本文中的代码托管在github上:https://github.com/WindyShade/DataSaveMethods 相对复杂的App仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每个客户端软件都需要做的.简单如"是否第一次打开"的BOOL值,大到游戏的进度和状态等数据,都需要进行本地持久化存储.这些数据的存储本质上就是写磁盘存文件,原始一点可以用iOS本身支持有NSFileManager这样的API,或者干脆C语言fwrite/fread,Cocoa Touch本身