只打印ArrayList中元素的设定值?

时间:2012-03-13 15:21:54

标签: java arraylist

我只想知道如何在ArrayList中打印出只有输出的给定特定值的字符串。例如:我输入“Hot”,“Cold”,“Pressure”,“Pain”。我应该使用什么方法/控制语句来使输出只有四个字母的单词?

输出: “冷” “疼痛”

它只打印“冷”& “痛苦”因为它们是唯一一个有四个元素的人。 使用.set会有用吗?

3 个答案:

答案 0 :(得分:0)

  • 您可以将字符串添加到地图中。键可以是字符串的长度,值可以是字符串列表。

Map<Integer, List<String>> -> Map<string length, List<String>>

这个预期是O(1)运行时

  • 您可以将字符串保留在列表中并遍历它们:
    List list = ...

    for (String s: list){
        if (s.length()==4){
              print(s);
        }
    }

这个有线性运行时

答案 1 :(得分:0)

如评论中所述,您可以遍历列表。如果这是重复操作,您可以使用映射按长度对字符串进行排序。请参阅以下2个解决方案的示例:

public static void main(String[] args) {
    List<String> list = Arrays.asList("Hot", "Cold", "Pressure", "Pain");

    //Solution 1
    for (String s : list) {
        if (s.length() == 4) {
            System.out.println(s); //prints Cold and Pain
        }
    }

    //Solution 2
    Map<Integer, List<String>> map = new HashMap<Integer, List<String>> ();
    for (String s : list) {
        int length = s.length();
        if (map.containsKey(length)) {
            map.get(length).add(s);
        } else {
            map.put(length, new ArrayList<String>(Arrays.asList(s)));
        }
    }

    System.out.println(map.get(4)); //prints [Cold, Pain]
    System.out.println(map.get(3)); //prints [Hot]
}

答案 2 :(得分:0)

我还要检查空值(不知道它们是否可能在你的情况下发生)以避免可能的java.lang.NullPointerException:

    List<String> list = Arrays.asList("Hot", "Cold", "Pressure", null, "Pain");

    for (String s : list) {
        if (s != null && s.length() == 4) {
            System.out.println(s); // prints "Cold" and "Pain"
        }
    }