第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如下代碼,求改進的方法

如下代碼,求改進的方法

白板的微信 2022-09-17 15:11:27
Java代碼  List<String> myRoles = new ArrayList<String>();  List<String> hasRoles = new ArrayList<String>();    public boolean hasRole()  {      for (String my : myRoles)      {      for (String role : hasRoles)          {          if(my.equals(role))          {              return true;          }      }      }            return false;  }  上面方面的邏輯是:myRoles集合中的字符串,只要有一個在hasRoles集合中存在,就返回true但是,這個方法嵌套了2層for循環(huán),效率似乎很低
查看完整描述

3 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

用Set做一個myRoles和hasRoles的并集,然后判斷這個并集的大小是不是等于myRoles和hasRoles的大小相加,如果不是的話,可定有重復了。

Java代碼  

  1. Set<String> totalRoles = new HashSet<String>();  

  2. List<String> myRoles = new ArrayList<String>();    

  3. List<String> hasRoles = new ArrayList<String>();    

  4.     

  5. public boolean hasRole()    

  6. {    

  7.     // you can use addAll()  

  8.     for (String my : myRoles)    

  9.     {    

  10.       totalRoles.add(my);  

  11.     }  

  12.     // you can use addAll()  

  13.     for (String role : hasRoles)    

  14.       totalRoles.add(role);       

  15.     }    

  16.     return totalRoles.size()==(myRoles.size()+hasRoles.size());  

  17. }   

查看下ArrayList.retainAll 和removeAll本質上都做了兩個for循環(huán)


查看完整回答
反對 回復 2022-09-21
?
ABOUTYOU

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

你的最佳答案必須循環(huán)M+N次
但是第二個答案最壞情況下是M+N,而且沒有任何問題,不管List數據是否重復
但是你的最佳答案就不行了。

查看完整回答
反對 回復 2022-09-21
?
心有法竹

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

為什么要用雙層循環(huán)?樓下的想到的辦法不敢恭維,首先想到的應該是API的list的contains方法把
for (String my : myRoles){
   if(hasRoles.contains(my)){
      return true;
   }
}
return false;

查看完整回答
反對 回復 2022-09-21
  • 3 回答
  • 0 關注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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