java - 查找并删除 ArrayList 中的名称

标签 java

基本上,我试图在数组列表中搜索特定名称,然后仅删除该名称。我正在为大学做作业,它需要按名称搜索和删除,所以我不能使用 int 索引,我对java相当陌生,所以我会发布我的代码,也许我错过了一些东西,任何帮助都会很棒。

import java.util.ArrayList;

public class GaaClub {
    private ArrayList<Member> players;


    {
    }

    public GaaClub() {
        players = new ArrayList<Member>();

    }

    public void addStanderedMember() {
        // create a message object:
        StdOut.println("Please enter the members's name: ");
        StdIn.readLine();
        String name = StdIn.readLine();
        StdOut.println("Please enter the members address: ");
        String address = StdIn.readLine();
        StdOut.println("Please enter the members DOB: ");
        String dob = StdIn.readLine();
        StdOut.println("Please enter the amount to Pay: ");
        double mempaid = StdIn.readDouble();
        Member player = new Member(name, address, dob, mempaid);
        players.add(player);
    }

    public void addStandaredPlayer() {
        // create a message object:
        StdOut.println("Please enter the standard Player's name: ");
        StdIn.readLine();
        String name = StdIn.readLine();
        StdOut.println("Please enter the standard Player's address: ");
        String address = StdIn.readLine();
        StdOut.println("Please enter the standard Player's DOB: ");
        String dob = StdIn.readLine();
        StdOut.println("Please enter the amount to Pay: ");
        double mempaid = StdIn.readDouble();
        StandardPlayer player = new StandardPlayer(name, address, dob, mempaid);
        players.add(player);
    }

    public void addElitePlayer() {
        // create a message object:
        StdOut.println("Please enter the Elite Players's name: ");
        StdIn.readLine();
        String name = StdIn.readLine();
        StdOut.println("Please enter the Elite Players's address: ");
        String address = StdIn.readLine();
        StdOut.println("Please enter the Elite Players's DOB: ");
        String dob = StdIn.readLine();
        StdOut.println("Please enter the the amount to Pay: ");
        double mempaid = StdIn.readDouble();
        StdOut.println("Please enter the Elite Players's BMI: ");
        double bmi = StdIn.readDouble();
        StdOut.println("Please enter the Elite Players's height: ");
        double height = StdIn.readDouble();
        ElitePlayer player = new ElitePlayer(name, address, dob, mempaid, bmi,
                height);
        players.add(player);
    }

    public static void main(String[] args) {
        GaaClub app = new GaaClub();
        app.run();
    }

    public void memberType() {
        StdOut.println("Enter Type of membership: ");
        StdOut.println("1) Add a Standard Member");
        StdOut.println("2) Add an Elite Player");
        StdOut.println("3) Add a Standard Player");
        String memberchoice = StdIn.readString();
        if (memberchoice.equals("1"))
            addStanderedMember();
        if (memberchoice.equals("2"))
            addElitePlayer();
        if (memberchoice.equals("3"))
            addStandaredPlayer();

    }

    public void listNames() {
        for (Member player : players) {
                player.list();  
        }
    }


    public  void removeName() {
        for (Member player : players) {
            listNames();
            String sResponse = StdIn.readString();
            if (sResponse.equals(player.name)) 
            {
                players.remove(player);;
                return;
            }
        }
}



    private int mainMenu() {
        StdOut.println("1) Add a Member");
        StdOut.println("2) Remove Player");
        StdOut.println("3) List Names");
        StdOut.println("4) List Members");
        StdOut.println("0) Exit");
        StdOut.print("==>>");
        int option = StdIn.readInt();
        return option;
    }

    public void run() {
        {
            StdOut.println("Posts");
            int option = mainMenu();
            while (option != 0) {
                switch (option) {
                    case 1:
                        memberType();
                        break;
                    case 2:
                        removeName();
                        break;
                    case 3:
                        addStanderedMember();
                        break;
                    case 4:
                        listNames();
                        break;
                }
                option = mainMenu();
            }
            StdOut.println("Exiting..."); 
        }
    }
}

第二个文件:

import java.util.ArrayList;


public class Member {

    protected String name; 
    protected String address;
    protected String dob;
    protected double mempaid;

    public Member(String name, String address, String dob, double mempaid) {
        this.name = name;
        this.address = address;
        this.dob = dob;
        this.mempaid = mempaid ;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getDob() {
        return dob;
    }

    public void list(){
        System.out.println(name);
    }

    public void setDob(String dob) {
        this.dob = dob;
    }

    public double getMempaid() {
        return mempaid;
    }

    public void setMempaid(double mempaid) {
        this.mempaid = mempaid;
    }


    @Override
    public String toString() {
        return "Member [name=" + name + ", address=" + address + ", dob=" + dob
            + ", mempaid=" + mempaid + "]";
    }
}


import java.util.ArrayList;

public class StandardPlayer extends Member {
    private ArrayList<Competition> competition;

    public StandardPlayer(String name, String address, String dob,
            double mempaid) {
        super(name, address, dob, mempaid);

    }

    public ArrayList<Competition> getCopmetition() {
        return competition;
    }

    public void setCopmetition(ArrayList<Competition> copmetition) {
        this.competition = copmetition;
    }

    void addCompetiton(Competition c) {

    }

    void payMembership(double amt) {
        mempaid = 0;
    }



    @Override
    public String toString() {
        return "StandardPlayer [competition=" + competition + ", name=" + name
            + ", address=" + address + ", dob=" + dob + ", mempaid="
            + mempaid + "]";
    }




}

第三个文件:

import java.util.ArrayList;

public class ElitePlayer extends Member {
    private double bmi;
    private double height;
    private ArrayList<Competition> competition;

    public ElitePlayer(String name, String address,
                String dob, double mempaid, double bmi, double height) {
         super(name, address, dob, mempaid);
        this.bmi = bmi;
        this.height = height;
    }

    public double getBmi() {
        return bmi;
    }

    public void setBmi(double bmi) {
        this.bmi = bmi;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public ArrayList<Competition> getCopmetition() {
        return competition;
    }

    void payMembership(double amt) {
        mempaid = 0;
    }


    @Override
    public String toString() {
        return "ElitePlayer [bmi=" + bmi  + ", height=" + height
            + ", competition=" + competition + ", name=" + name
            + ", address=" + address + ", dob=" + dob + ", mempaid="
            + mempaid + "]";
    }

    public void setCompetition(ArrayList<Competition> competition) {
        this.competition = competition;`enter code here`
    }
}

最佳答案

ArrayList有一个可以通过Object删除的方法:

ArrayList<String> arr = new ArrayList<String>();
arr.add("Bob");
arr.remove("Bob");

它删除对象的第一个实例。

您当然可以模拟相同的行为:

ArrayList<String> arr = new ArrayList<String>();
arr.add("Bob");

String searchTerm = "Bob";
for (int i = 0; i < arr.size(); i++) {
    if (arr.get(i).equals(searchTerm) {
        arr.remove(i);
        break;
    }
}

仅当您希望在其他或类似条件下删除搜索时,才建议使用这种与内置方法的偏差。例如,如果它包含单词“Bob”...

ArrayList<String> arr = new ArrayList<String>();
arr.add("Bob Bobingston");

String searchTerm = "Bob";
for (int i = 0; i < arr.size(); i++) {
    if (arr.get(i).contains(searchTerm)) {
        arr.remove(i);
        break;
    } 
}

关于java - 查找并删除 ArrayList 中的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22973879/

相关文章:

Java 库大小

java - JSONException : Value <br of type java. lang.String 无法转换为 JSONArray

java - 当我使用 Windows Builder Swing 设计器时,无法在 NetBeans 中编辑 java 源代码(旧方式)

Java - 公开一个将接口(interface)实现为 Web 服务的 DAO 类

java - 接口(interface)中的方法数

java - 如何方便地对 CompleteableFuture<BigDecimal> 的 Stream 求和?

java - 我可以在 Xcode 项目中使用 .java 文件中的方法吗?

Java-ArrayList引用变量问题

java - Java Web 应用程序中的地理围栏

Java 玩! 2 - 使用 cookie 进行用户管理