java使用 ArrayList 的增删改(Java面向对象基础练习)
来源:互联网 发布:电脑裁板锯用软件 编辑:程序博客网 时间:2024/05/21 21:44
题目
编写一个简单的程序,利用数组保存书(Book),cd(CompactDisk),磁带(Tape)信息,并能实现插入、删除、查找功能。注意使用面向对象的思想进行程序设计。
解题思路
- 使用arraylist数组,原因是可以根据实际情况添加信息而不用确定数组的大小。
- 没有明确指出信息内容,暂定添加name和number两项内容。
- 面向对象的方法:建立类,建立对象,建立方法。在main方法里new出对象,调用方法。
代码
父类 media
package bookOperate;import java.util.ArrayList;import java.util.Iterator;import java.util.Scanner;/** * Created by zhigeek on 2016/10/27. *///父类public class Media { public static void main(String[] args) throws Exception{ MedOperate medOperate=new MedOperate(); while (true) { Scanner in = new Scanner(System.in); System.out.println("选择操作"); System.out.println("a 添加信息"); System.out.println("b 删除信息"); System.out.println("c 修改信息"); System.out.println("d 查看信息"); String opertype = in.next(); if (opertype.equals("a")) { System.out.println("输入name"); String name = in.next(); System.out.println("输入number"); int number = in.nextInt(); Med med = new Med(name, number); medOperate.insert(med); } else if (opertype.equals("b")) { System.out.println("输入要删除的number"); int number = in.nextInt(); medOperate.delete(number); } else if (opertype.equals("c")) { System.out.println("输入要修改的name"); String name = in.next(); System.out.println("重新录入信息,请输入name"); String newname = in.next(); System.out.println("重新录入信息,请输入number"); int newnumber = in.nextInt(); Med newmed = new Med(newname, newnumber); medOperate.updata(name, newmed); } else if (opertype.equals("d")) { medOperate.output(); } } } //信息类}class Med{ private String name; private int number; public Med(String n, int ID) { name = n; number = ID; }//构造器 public String getName() { return name; } public int getNumber() { return number; }}//信息操作类class MedOperate { ArrayList<Med> a = new ArrayList<>(); //增加 public void insert(Med med) { a.add(med); } //删除(break方法)// public void delete(int id) {// for (Med med : a) {// if (med.getNumber()==id) {// a.remove(med);// break;// }// }//// } //删除(迭代器iterator方法) public void delete(int id){ Iterator<Med> it = a.iterator(); while(it.hasNext()){ Med med = it.next(); if(med.getNumber()==id){ it.remove(); } } } //替换 public void updata(String name, Med newmed) { for (Med med : a) { if (med.getName().equals(name)) { int count=0; //这里使用一个循环来确定数组的下标,为了使用arraylist的set()方法 for(int i=0;i<a.size();i++){ if(a.get(i).getName()!=name){ count++; } } a.set(count-1, newmed); break; } } } //输出 public void output(){ for (Med med:a){ System.out.print(med.getName()); System.out.print(" "+med.getNumber()); } }}
继承类
public class Tape extends Media { public Tape(){ super(); }}
其他两个可以类比。
tips
面向对象知识总结
- 在类之间,最常见的关系有
- 依赖(usea-a)如果一个类的方法操纵另一个类的对象,也就是一个类依赖另外一个类。
- 聚合(hse-a)聚合关系意味着类 A包含类B的对象
- 继承(is-a)类A扩展类B,类A不但包含从类B继承的方法,还可以添加其他方法。
- 用户自建立类
类常常包括构造器和方法。构造器与类同名,在构造类的对象的时候,构造器会运行,以便将实例域初始化为想要的状态。构造器总是伴随着new操作符的执行被调用。而不能对一个已经存在对象调用构造器来达到重新设置实例域的目的。
arrayliat的使用
ArrayList是一个采用参数类型的泛型类。为了指定数组列表保存的元素对象类型,需要用一对尖括号括起来加在后面。声明和构造一个数组列表:
ArrayList<类名>list=new ArrayList<>()
三个构造函数(转载)
1.public ArrayList(int initialCapacity);
构造一个具有指定初始容量的空列表
2.pubilc ArrayList();
构造一个初始容量为10的空列表
3.public ArrayList(Collection<> c)
构造一个包含指定collection的元素的列表。若collection为null,会抛出NullPointerException
其他常用方法(转载)
4.trimToSize
public void trimToSize();
将此ArrayList的容量调整为列表的当前大小。应用程序可以使用此操作来最小化ArrayList实例的存储量。
5.size
public int size();
返回此列表中的元素数。
6.isEmpty
public boolean isEmpty();
如果此列表中没有元素,则返回 true
7.contains
public boolean contains(Object o);
如果此列表中包含指定的元素,则返回 true
8.indexOf
public int indexOf(Object o)
返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。
9.lastIndexOf
public int lastIndexOf(Object o)
返回此列表中最后一次出现的指定元素的索引,或如果此列表不包含索引,则返回 -1。
10.toArray
x[]a=new x [list.size()]
list. toArray(a);
按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。
此方法担当基于数组的 API 和基于 collection 的 API 之间的桥梁。
11.get
public E get(int index);
返回此列表中指定位置上的元素
12.set
public E set(int index, E element);
用指定的元素替代此列表中指定位置上的元素。返回值为以前位于该指定位置上的元素
13.add
public boolean add(E element);
将指定的元素添加到此列表的尾部。添加成功返回true
14.add
public void add(int index, E element)
将指定的元素插入此列表中的指定位置。向右移动当前位于该位置的元素(如果有)以及所有后续元素(将其索引加 1)。
15.remove
public E remove(int index)
移除此列表中指定位置的元素,返回从列表中移除的元素
16.remove
public boolean remove(Object o)
移除此列表中首次出现的指定元素(如果存在)。如果列表不包含此元素,则列表不做改动。
17.clear
public void clear()
移除此列表中的所有元素。此调用返回后,列表将为空
18.addAll
public boolean addAll(Collection c)
按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部
19.addAll
public boolean addAll(int index, Collection c)
从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。
20.removeRange
protected void removeRange(int fromIndex, int endIndex);
移除列表中索引在 fromIndex(包括)和toIndex(不包括)之间的所有元素。向左移动所有后续元素(减小其索引)。此调用将列表缩短了 (toIndex - fromIndex)个元素。(如果toIndex==fromIndex,则此操作无效。)
- java使用 ArrayList 的增删改(Java面向对象基础练习)
- java语句实现数据库的增删查改(面向对象方式,以student为例)
- java对象数组的增删改查
- java 对象数组(增删改查)
- 【简易版】Java ArrayList(增删改查)
- 面向对象的学生增删改查管理系统java版
- Java基础复习:面向对象练习1
- java面向对象基础 练习 +答案
- java 面向对象基础与练习
- Java练习(面向对象)
- Java面向对象练习
- JAVA面向对象练习
- java的面向对象基础
- Java 面向对象的基础
- Java的增删改查(例子)
- 基于Java对象的数据库增删改查操作
- java 根据实体对象生成 增删改的SQL语句
- java基础(面向对象)
- Tagview(LinearLayout 动态添加子Button,并自动换行 )
- Android动画的使用(一):补间动画与逐帧动画
- 如何提高自己的iOS开发水平(转自唐巧的博客)
- MJRefreshFooter明杰刷新控件结束加载显示“没有更多内容”
- 深度学习之(八)Twitter情感分析
- java使用 ArrayList 的增删改(Java面向对象基础练习)
- VS的.props工程属性文件的使用
- h3c和cisco开snmp
- eclipse打开一个文件后闪退(注意不是启动就闪退,是启动后打开某些类或者配置文件会闪退)解决办法
- 在RAC 中解决 vipca 和 srvctl 无法执行的错误
- Linux系统中“动态库”和“静态库”那点事儿
- View监听绑定不上
- Trinity进行转录组组装(2))
- ArcGIS网络分析之Silverlight客户端服务区分析(五)