我不确定自己是否正确表达了自己的标题,但我会尽力在此处更具体。查找分配给ArrayList中的字符串的相同对象
我有什么: 的的ArrayList与客户/顾客。 安排数组列表与电话号码分配给客户/客户。
我的客户端类: import java.util。*;
public class Clients implements Comparable<Clients> {
private String name;
private String address;
public ArrayList<Share> shareList = new ArrayList<Share>();
private PhoneBook phoneBook = new PhoneBook();
public Clients(String name, String address) {
this.name = name;
this.address = address;
}
public void addPhoneDescription(String description) {
phoneBook.addPhoneDescription(description);
}
public void addPhoneNumber(String number) {
phoneBook.addPhoneNumber(number);
}
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 PhoneBook getPhoneBook() {
return phoneBook;
}
public boolean equals(Object obj) {
Clients c = (Clients) obj;
return this.name.equals(c.name);
}
public String toString() {
String result;
result = ("\n" + "Name: " + this.getName() + "\n" + "Address: "
+ this.getAddress() + "\n" + "Phone description: " + this
.getPhoneBook());
return result;
}
public int compareTo(Clients other) {
return name.compareTo(other.name);
}
}
这是我电话簿类由一套/ get方法:
import java.util.ArrayList;
public class PhoneBook {
private ArrayList<String> numbersList = new ArrayList<String>();
private ArrayList<String> phoneDescription = new ArrayList<String>();
public void addPhoneDescription(String description) {
phoneDescription.add(description);
}
public void addPhoneNumber(String number) { // Add the phone number to the numbersList
numbersList.add(number);
}
public String toString(){
return numbersList.toString() + phoneDescription.toString();
}
}
我想实现:如果我创造让说,3个客户端,其中2具有相同的号码我想打印出他们分享/拥有共同号码的2位客户,等等。我有我的计划类中创建一个方法了:
public void findDuplicatedNumbers() {
// method that looks for duplicated numbers that clients have
ArrayList<Integer> sNumber = new ArrayList<>();
ArrayList<Integer> duplicateNumber = new ArrayList<>();
for (int i = 0; i < clientList.size(); i++) {
for (int k = 0; k < (clientList.get(i).getPhoneBook().size); k++) {
if (sNumber.contains(clientList.get(i).getPhoneBook().get(k).getNumber())) {
if (duplicateNumber.contains(clientList.get(i).getPhoneBook().get(k).getNumber())) {
} else {
// adds to duplicateNumber arrayList
duplicateNumber.add(clientList.get(i).getPhoneBook().get(k).getNumber());
}
} else {
// adds to sNumber arrayList
sNumber.add(clientList.get(i).getPhoneBook().get(k).getNumber());
}
}
}
for (int i = 0; i < duplicateNumber.size(); i++) {
System.out.println("Phone number: " + duplicateNumber.get(i) + " is share with these clients: ");
for (int k = 0; k < clientList.size(); k++) {
for (int p = 0; p < (clientList.get(p).getPhoneBook().size()); p++) {
if (duplicateNumber.get(i) == clientList.get(k).getPhoneBook().get(p).getNumber()) {
System.out.println(clientList.get(k).getName() + ", ");
}
}
}
System.out.println("\n");
}
}
我有点理解你的代码,但我真的不需要通过编号查找客户端。在我的程序(主类)中,我有一个switch case场景,所以当用户按下一个数字时,findDuplicatedNumbers方法就会运行。仍然遇到一些困难。介意告诉我该怎么做? @Peter – Kanox
但是,这正是你所做的:检查电话号码,如果他们被分配多次。你的println显示你的输出。我将修改上面的代码以使其更清楚。 – Peter
说得更清楚一点:您将客户的电话号码与所有其他客户的电话号码进行比较。如果它存在于其他客户列表中,并且找到的客户端不相同,则它是重复的。因此,您确实在搜索所有客户端的特定电话号码,但只对那些分配给多个客户端的电话号码感兴趣。 – Peter