我需要使用用户的输入从> charac[1:2]
[1] "i" "j"
中删除元素。
不是真的要求解决方案,而是更多的指导方向正确。
ArrayList
这就是我的主要课程
public class BFFHelper
{
ArrayList<BestFriends> myBFFs;
Scanner keyboard = new Scanner(System.in);
public BFFHelper()
{
myBFFs = new ArrayList<BestFriends>();
}
public void addABFF()
{
System.out.println("Enter a first name: ");
String firstName = keyboard.next();
System.out.println("Enter a last name: ");
String lastName = keyboard.next();
System.out.println("Enter a nick name: ");
String nickName = keyboard.next();
System.out.println("Enter a phone number: ");
String cellPhone = keyboard.next();
BestFriends aBFF = new BestFriends(firstName, lastName, nickName, cellPhone);
myBFFs.add(aBFF);
}
public void changeABFF()
{
System.out.println("I am in changeBFF");
}
public void removeABFF()
{
//System.out.println("I am in removeABFF");
System.out.print("Enter friend's name to remove: ");
int i = 0;
boolean found = false;
while (i<myBFFs.size() && !found)
{
if (myBFFs.get(1).getfirstName().equalsIgnoreCase(firstName)) && (myBFFs.get(1).hetlastName().equalsIgnoreCase(lastName))
i++
}
}
public void displayABFF()
{
System.out.println("My Best Friends Phonebook is: ");
System.out.println(myBFFs);
}
}
答案 0 :(得分:0)
如何从用户输入中删除
ArrayList
的元素?
执行此类操作的一种方法是使用Iterator
并在找到匹配时致电remove()
,如下所示:
// Iterate over the list myBFFs
for (Iterator<BestFriends> it = myBFFs.iterator(); it.hasNext();) {
BestFriends bf = it.next();
if (/*some test here*/) {
// Found a match to remove
it.remove();
// Exit from the loop
// To be added if and only if you expect only one match otherwise keep iterating
break;
}
}
假设您使用Java 8,您可以依靠Stream API来满足这种需求。
如果您要删除第一场比赛
myBFFs.stream().filter(bf -> /*some test here*/).findFirst().ifPresent(myBFFs::remove);
此方法使用List#remove(Object o)
删除唯一对象。
如果您要删除所有匹配
myBFFs.removeAll(
myBFFs.stream().filter(bf -> /*some test here*/).collect(Collectors.toList())
);
此方法使用List#removeAll(Collection c)
删除对象集合。
答案 1 :(得分:0)
可以使用各种方式从ArrayList中删除元素,例如通过调用list.remove(index);或者,只需指定object to remove。
只需研究那些方法的Javadoc。除此之外,还有像 removeAll()这样的调用,可以删除所有提供给调用的参数。
附注:代码中至少有 个错误:
if (myBFFs.get(1).getfirstName().equalsIgnoreCase(firstName)) && (myBFFs.get(1).hetlastName().equalsIgnoreCase(lastName))
应该阅读。
if (myBFFs.get(i).getfirstName().equalsIgnoreCase(firstName)) && (myBFFs.get(i).hetlastName().equalsIgnoreCase(lastName))
假设你因为一个原因而与我一起循环;并且您不希望始终将元素1与自身进行比较。
虽然我们在这里:你可以改善你的抽象。显然你的程序是关于“人类”的。人类通常有固定的名字,没有他们。意义:拥有一个只代表人类的阶级;使用最终字段获取无法更改的信息。这些字段通过构造函数初始化;而你没有任何制定者。