如下代码,求改进的方法

Java代码  

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

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

  3.   

  4. public boolean hasRole()  

  5. {  

  6.     for (String my : myRoles)  

  7.     {  

  8.     for (String role : hasRoles)  

  9.         {  

  10.         if(my.equals(role))  

  11.         {  

  12.             return true;  

  13.         }  

  14.     }  

  15.     }  

  16.       

  17.     return false;  

  18. }  

上面方面的逻辑是:myRoles集合中的字符串,只要有一个在hasRoles集合中存在,就返回true
但是,这个方法嵌套了2层for循环,效率似乎很低


白板的微信
浏览 68回答 3
3回答

猛跑小猪

用Set做一个myRoles和hasRoles的并集,然后判断这个并集的大小是不是等于myRoles和hasRoles的大小相加,如果不是的话,可定有重复了。Java代码&nbsp;&nbsp;Set<String>&nbsp;totalRoles&nbsp;=&nbsp;new&nbsp;HashSet<String>();&nbsp;&nbsp;List<String>&nbsp;myRoles&nbsp;=&nbsp;new&nbsp;ArrayList<String>();&nbsp;&nbsp;&nbsp;&nbsp;List<String>&nbsp;hasRoles&nbsp;=&nbsp;new&nbsp;ArrayList<String>();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;boolean&nbsp;hasRole()&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;you&nbsp;can&nbsp;use&nbsp;addAll()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(String&nbsp;my&nbsp;:&nbsp;myRoles)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;totalRoles.add(my);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;you&nbsp;can&nbsp;use&nbsp;addAll()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(String&nbsp;role&nbsp;:&nbsp;hasRoles)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;totalRoles.add(role);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;totalRoles.size()==(myRoles.size()+hasRoles.size());&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;查看下ArrayList.retainAll 和removeAll本质上都做了两个for循环

ABOUTYOU

你的最佳答案必须循环M+N次但是第二个答案最坏情况下是M+N,而且没有任何问题,不管List数据是否重复但是你的最佳答案就不行了。

心有法竹

为什么要用双层循环?楼下的想到的办法不敢恭维,首先想到的应该是API的list的contains方法把for (String my : myRoles){&nbsp;&nbsp; if(hasRoles.contains(my)){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;&nbsp;&nbsp; }}return false;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java