有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java迭代ArrayList的泛型类型<User>

我正在尝试从arraylist获取值

我的用户类型bean类如下所示

class User{

      public String link;
      public String url;

     User(String l,String u){
           this.link=link;
           this.url=url;
      }
setters and getters below.. 

在这里,我试图用main编写一个类

public class ListClass{
      public static void main(String args[]){
            List<User> list = new ArrayList<User>();
            list.add(new User("link1","url1"));
            list.add(new User("link2","url2"));
            list.add(new User("link3","url3"));

            //here i want to iterate both links and urls one by one 

            Iterator it=list.iterator();
            // remaining the code to get both link1 and url1 ..
}

我需要输出为:

link1  url1
link2  url2
link3  url2

共 (4) 个答案

  1. # 1 楼答案

    可以使用for in构造,而不是迭代器:

    for (User u : list) {
      System.out.println(u.link + " " + u.url);
    }
    

    如果您确实想使用迭代器:

    Iterator<User> it=list.iterator();
    while (it.hasNext()) {
      User u = it.next();
      System.out.println(u.link + " " + u.url);
    }
    
  2. # 2 楼答案

    如果你坚持使用iTreator:

    Iterator<User> it = list.iterator();
    while(it.hasNext()) {
       /...
       it.next();
    }
    
  3. # 3 楼答案

    for (User u : list) {
       System.out.println(u.getLink() + "  " + u.getUrl());
    }
    
  4. # 4 楼答案

    正如其他用户所说,您可以使用enhanced ^{} statement。还考虑添加^ {< CD2>}实现^ {< CD3>}:

    class User
    {
        @Override public String toString()
        {
            return this.link + " " + this.url;
        }
    }
    

    这将使循环减少到:

    for (User u: list)
    {
        System.out.println(u);
    }