亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在java中執行此循環

如何在java中執行此循環

喵喔喔 2021-10-13 16:48:52
我有n個對象,它們有一個名為 status 的屬性。所以我必須檢查所有對象的這個屬性,并為所有對象提供一個值。讓我解釋。status 屬性可以有這樣的值(字符串)-“1”、“2”、“3”、“4”、“5”、“7”、“已完成”、“未完成”…… .(除 1..7 之外的任何字符串)我將遍歷所有對象,如果任何對象的狀態屬性值為 1-7,則將選擇較高的一個,然后將選擇該值。 例子obj1.status="1", obj2.status="6"。選擇的值="6"obj1.status="4", obj2.status="2"。選定的值="4"obj1.status="7", obj2.status="6"。選定的值="7"如果沒有對象的狀態屬性為 1-7 ,則選擇的值將是“XYZ” 示例obj1.status="已完成",obj2.status="abc"。選定的值="XYZ"obj1.status="abc", obj2.status="def"。選定的值="XYZ"obj1.status="jkl", obj2.status="mno"。選定的值="XYZ"如果至少一個對象的狀態屬性為 1-7,其余所有對象都有其他字符串,則將選擇數字值。obj1.status="abc", obj2.status="1"。選定的值="1"obj1.status="abc", obj2.status="5",obj3.status="4",. 選定的值="5"
查看完整描述

3 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

也許是這樣的:


Optional<YourObject> optional = test.stream().

filter(object -> (object.status.matches("[1-7]"))).sorted((o1, o2) -> Integer.valueOf(o2.status).compareTo(Integer.valueOf(o1.status))).findFirst();

String value = optional.isPresent() ? optional.get().status : "XYZ";


查看完整回答
反對 回復 2021-10-13
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

它會是這樣的:


String regex = "[1-7]";

int max = 0;

int number;


for (Object obj : objectList){

  if(obj.status().matches(regex)){

      number = Integer.valueOf(obj.status());

      if(number > max){

        max=number;

     }

  }

}

if(max==0){

  System.out.println("XYZ");} 

else{

  System.out.println(String.valueOf(max));

}


查看完整回答
反對 回復 2021-10-13
?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

這是一個經典的reduce算法。(沒有必要的強制轉換和正則表達式。)


BinaryOperator<String> reducer = (v1, v2) -> {

    if (v1.length() == 1 && v1.compareTo("1") >= 0 && v1.compareTo("7") <= 0) {

        // v1 is a number - return v2 if higher number, else v1

        return v2.length() == 1 && v2.compareTo("1") >= 0 && v2.compareTo("7") <= 0 && v1.compareTo(v2) < 0 ? v2 : v1;

    } else {

        // v1 is not a number - return v2 if number, else "XYZ" 

        return v2.length() == 1 && v2.compareTo("1") >= 0 && v2.compareTo("7") <= 0 ? v2 : "XYZ";

    }

};

測試:


Stream<String> of1 = Stream.of("3", "1", "2");

Stream<String> of2 = Stream.of("1", "incomplete", "2");

Stream<String> of3 = Stream.of("incomplete", "status");

System.out.println(of1.reduce(reducer).get()); // 3

System.out.println(of2.reduce(reducer).get()); // 2

System.out.println(of3.reduce(reducer).get()); // XYZ


查看完整回答
反對 回復 2021-10-13
  • 3 回答
  • 0 關注
  • 162 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號