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

面向对象知识总结


  • 在类之间,最常见的关系有
    1. 依赖(usea-a)如果一个类的方法操纵另一个类的对象,也就是一个类依赖另外一个类。
    2. 聚合(hse-a)聚合关系意味着类 A包含类B的对象
    3. 继承(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,则此操作无效。)

0 0
原创粉丝点击