一行中有多个List <string>

时间:2016-03-19 18:08:18

标签: java arrays string for-loop arraylist

我需要通过for循环在一行中显示多个列表数组 - 所以基本上我也需要计算它们。

示例:

enter image description here

这是我的代码:

List<String> name = new ArrayList<String>();
List<String> number = new ArrayList<String>();
  name.add("Tommy");                      // Test name
  name.add("Tom");                        // Test name 2
  number.add(new String("123-456-7890")); // Test phone number
  number.add(new String("098-765-4321")); // Test phone number 2

for (String d:name) {
      System.out.print(d);
    }
for (String b:number) {
      System.out.println(b);
    }

这是我输出的代码:

enter image description here

很抱歉,如果这个问题重复,如果是,我会马上删除我的问题但是现在我还没有这样的事情。

谢谢。

3 个答案:

答案 0 :(得分:2)

我认为在这种情况下你最好使用Map,它可以让你更灵活,更好地控制条目:

    import java.util.HashMap;
    import java.util.Map;

    /**
     * Created by dlcol_000 on 3/19/2016.
     */
    public class MapExample {
        public void execute(){
            Map<String,String> phoneDirectory = new HashMap<>();
            phoneDirectory.put("Tommy","123-456-7890");
            phoneDirectory.put("Tom", "098-765-4321");

            //Now you can do things like, look up the phone number for a person:
            String tomsPhone = phoneDirectory.get("Tom");
            System.out.println("Toms' phone number is: " + tomsPhone);

            //Or you can print the contents of the phone directory
            System.out.println("The phone directory contains: " + phoneDirectory);

            //Or you can iterate over all people in the directory printing their numbers
            for(String person: phoneDirectory.keySet()){
                System.out.println(person + ": " + phoneDirectory.get(person));
            }
        }

        public static void main(String... args){
            new MapExample().execute();
        }
    }

其中给出了以下输出:

Toms' phone number is: 098-765-4321
The phone directory contains: {Tom=098-765-4321, Tommy=123-456-7890}
Tom: 098-765-4321
Tommy: 123-456-7890

答案 1 :(得分:1)

您正在打印完整的名称列表,然后是数字列表,您应该插入/替换并在每次迭代中从每个列表中打印一个

final List<String> name = new ArrayList<String>();
final List<String> number = new ArrayList<String>();
name.add("Tommy"); // Test name
name.add("Tom"); // Test name 2
number.add(new String("123-456-7890")); // Test phone number
number.add(new String("098-765-4321")); // Test phone number 2

for (int i = 0; i < name.size(); i++) {
    System.out.println(name.get(i) + "\t\t" + number.get(i));
}

最后,我建议您将上述评论定义为“ContactPerson”,并覆盖toString方法。

通过这种方法,您可以更快,更安全地使用它

答案 2 :(得分:0)

这实际上取决于您想要使用对象的内容。

一个重要方面是应该分开关注点。在你的情况下:

  1. 关注“人”;每个人可能有一个名字;和一个......或者几个(!)电话号码
  2. 关注某些信息如何在内部建模。当然,您可以将电话号码视为带数字的简单字符串。但你也可以设计一个包含电话号码的全班。
  3. 关注某些信息如何显示
  4. 基于此,您可以为首发提供以下内容:

    • 创建一个包含两个字段的“Person”类;名称的字符串;和电话号码的字符串
    • 覆盖包含姓名和电话号码的toString()方法

    突然间,迭代你的Person对象列表并为每个人调用System.out.println(person.toString());你有很好的格式化输出。

    我给你的关键信息:明白有很多选择;并且不应该停留在第一个“工作”版本上;但是玩耍......