私の割り当てのためには、配列リストからユーザーを削除した後、イテレータを使用して配列リストを調べ、リストからユーザを削除する代わりに、そのリストから特定のユーザを1つだけ出力する必要があります。この質問は、要素の削除についての私の他の質問と似ていますが、ユーザーフォームをリストから削除するのではなく、リストを反復して1人のユーザーを出力する方法を尋ねる方法が異なります。私は、if文を含み、.next()関数を使用するwhileループを使用しようとしましたが、これはすべてのユーザを出力するので、1人のユーザを出力しているようには見えません。私は、プログラムのこの部分を再生するため、関連するコードを共有します:どのように配列リストの要素を出力するのですか?
メインクラス(配列リストが作成されている)
package main;
public class Main{
public static void main(String[] args) {
System.out.println("***********Iteration of administrators***********");
UserGroup2 userGroupObject2 = new UserGroup2();
for (User secondusergroup : userGroupObject2.getUserGroup())
{
userGroupObject2.getUserIterator();
System.out.println(secondusergroup.toString());
}
}
}
}
UserGroup2クラス
を(メソッドを呼び出すために使用されます)package main;
import java.util.ArrayList;
import java.util.Iterator;
public class UserGroup2 implements Iterable<UserGroup2> {
ArrayList<User> administrators = new ArrayList<>();
public UserGroup2()
{
addUser(new User("lnb1g16", "Student", "Lee"));
addUser(new User("hpf1g17", "Staff", "Harry"));
addUser(new User("jks1g25", "Student", "Jordon"));
addUser(new User("ohw1237", "Admin", "Oliver"));
addUser(new User("ahs1213", "Student", "Jordon"));
addUser(new User("bdh1285", "Admin", "Bob"));
addUser(new User("tqn1294", "Student", "Taylor"));
}
public void addUser(User inUser)
{
//userGroup.add(new User("LeeB123", "Staff", "Lee"));
administrators.add(inUser);
}
public ArrayList<User> getUserGroup() {
return administrators;
}
public void getUserIterator() {
Iterator<User> it2 = administrators.iterator();
while (it2.hasNext()) {
User xxx = it2.next();
if (xxx.getUsername().equals("jks1g25")) {
it2.next();
}
}
}
}
Userクラス(ユーザの詳細)
package main;
class User {
String username;
String userType;
String name;
User(String username, String userType, String name) {
this.username = username;
this.userType = userType;
this.name = name;
}
public String getUsername() {
return username;
}
public String getUserType() {
return userType;
}
public String getName() {
return name;
}
public String setUserType(String admin) {
return userType = "admin";
}
@Override
public String toString() {
return username + " " + userType;
}
}
私はこれを行う方法についてオンラインで検索しようとしましたが、配列リストの1つの要素を出力する方法を指定するソースを見つけることができないため、同じ問題に悩まされている可能性がある助けていただきありがとうございます。
'it'の中の' it2.next() 'ではなく' System.out.println(xxx); 'を実行できませんか? – 4castle
ArrayListのドキュメント(https://docs.oracle)をご覧ください。 – giZm0
私はそれがリストの6番目の反復を取得するようにしていますが、それが通過するたびにこの繰り返しを出力しているようです。配列リストとそれは各ユーザーのための配列リストを通過するので、プログラム内のすべてのユーザーのためにこの繰り返しを印刷しています。誰もが一度だけ印刷するようにこれを修正する方法を知っていますか? – John123