【问题标题】:Accessing an ArrayList within an ArrayList在 ArrayList 中访问 ArrayList
【发布时间】:2018-09-06 23:29:31
【问题描述】:

我已经创建了 ArrayLists (memberFriends) 的 ArrayList (members)。所以,“member”有一个朋友列表。

这个方法接收一个成员的名字,它的目标是列出所有成员的朋友。我很困惑如何从成员列表中访问朋友的 ArrayList。

public java.lang.String[] getPals(java.lang.String name) {

    if(members.contains(name)) {
        memberFriends.get(members.indexOf(name));
        String[] friends = memberFriends.toArray(new String[memberFriends.size()]);
    }
    return friends;

}

所以基本上,我在这里要做的是,说朋友的名字是Joe,我想去ArrayList成员中的Joe,把他朋友的ArrayList变成一个数组。我只是对如何访问乔的朋友感到困惑。我在上面的第三行代码中尝试做的是访问名称“Joe”。现在我很困惑如何访问 Joey 的朋友 ArrayList。

【问题讨论】:

    标签: java arrays arraylist


    【解决方案1】:

    这看起来像是泛型的案例。如果你想访问memberFriends.get(0)(它会打印一个数组),那么需要这样指明memberFriends:

    List<List<String>> memberFriends = new ArrayList<List<String>>();
    

    不确定我是否理解:然后您可以尝试迭代:

    for (List<String> member : memberFriends) {
    
      for (String s : member) {
    
       
      }
    }
    

    【讨论】:

    • 我的班级名列前茅
    • 私有 ArrayList> memberFriends = new ArrayList>();
    • 但是我想用这种方法做的是选择其中一个成员,并让他们的朋友成为一个数组
    【解决方案2】:

    假设您可以控制如何代表成员及其朋友,我建议您这样做:

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Map;
    
    public class Example {
    
        public static class Member {
            String name;
    
            public Member(String name) {
                this.name = name;
            }
    
            @Override
            public String toString() {
                return "Member [name=" + name + "]";
            }
        }
    
        public static void main(String[] args) {
            Map<Member, ArrayList<Member>> members = new HashMap<>();
            populateMembers(members);
            System.out.println(members);
            getPals(members, "Ross");
        }
    
        private static Member[] getPals(Map<Member, ArrayList<Member>> members, String name) {
            if (members.get(name) != null) {
                return members.get(name).toArray(new Member[members.get(name).size()]);
            } else {
                return new Member[] {};
            }
        }
    
        private static void populateMembers(Map<Member, ArrayList<Member>> members) {
            String[] names = new String[] { "Joe", "David", "Ross", "Monica", "James" };
            for (int i = 0; i < names.length; i++) {
                ArrayList<Member> friends = new ArrayList<>();
                for (int j = i+1; j < names.length; j++) {
                    friends.add(new Member(names[j]));
                }
                members.put(new Member(names[i]), friends);
            }
        }
    }
    

    选项二(如果你坚持使用两个数组列表,members和memberFriends:

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.Map;
    
    public class Example {
    
        public static class Member {
            String name;
    
            public Member(String name) {
                this.name = name;
            }
    
            @Override
            public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result + ((name == null) ? 0 : name.hashCode());
                return result;
            }
    
            @Override
            public boolean equals(Object obj) {
                if (this == obj)
                    return true;
                if (obj == null)
                    return false;
                if (getClass() != obj.getClass())
                    return false;
                Member other = (Member) obj;
                if (name == null) {
                    if (other.name != null)
                        return false;
                } else if (!name.equals(other.name))
                    return false;
                return true;
            }
    
            @Override
            public String toString() {
                return "Member [name=" + name + "]";
            }
        }
    
        public static ArrayList<Member> members = new ArrayList<>();
        public static ArrayList<ArrayList<Member>> memberFriends = new ArrayList<>();
    
        public static void main(String[] args) {
            populateMembers();
            System.out.println(members);
            System.out.println(memberFriends);
            System.out.println(Arrays.toString(getPals("Ross")));
        }
    
        private static Member[] getPals(String name) {
            int index = members.lastIndexOf(new Member(name));
            if (index != -1) {
                return memberFriends.get(index).toArray(new Member[memberFriends.get(index).size()]);
            } else {
                return new Member[] {};
            }
        }
    
        private static void populateMembers() {
            String[] names = new String[] { "Joe", "David", "Ross", "Monica", "James" };
            for (int i = 0; i < names.length; i++) {
                ArrayList<Member> friends = new ArrayList<>();
                for (int j = i + 1; j < names.length; j++) {
                    friends.add(new Member(names[j]));
                }
                members.add(new Member(names[i]));
                memberFriends.add(friends);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 2012-02-22
      • 1970-01-01
      • 2013-09-04
      相关资源
      最近更新 更多