簡體   English   中英

僅打印ArrayList中元素的設置值?

[英]Printing only a set value of elements in an ArrayList?

我只想知道如何僅在輸出中打印出具有給定特定值的ArrayList中的字符串。 例如:我輸入“熱”,“冷”,“壓力”,“疼痛”。 我應該使用哪種方法/控制語句,以便輸出僅是四個字母的單詞?

輸出:“冷”“痛”

它僅打印“冷”和“疼痛”,因為它們是唯一具有四個元素的一個。 使用.set會有用嗎?

  • 您可以將字符串添加到地圖。 鍵可以是字符串的長度,值可以是字符串列表。

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

預期此O(1)運行時

  • 您可以將字符串保留在列表中並遍歷它們:
List list = ...

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

這具有線性運行時

如評論中所述,您可以遍歷列表。 如果這是重復操作,則可以使用映射按長度對字符串進行排序。 請參閱以下帶有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]
}

我還將檢查null(不知道它們是否可能在您的情況下發生),以避免可能的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"
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM