stream替代雙層for迴圈

2021-10-06 15:02:23 字數 2456 閱讀 2597

這是在處理業務中遇到的:

資料如下:
public class book

public void setbookid(string bookid)

public string getname()

public void setname(string name)

public string getdepname()

public void setdepname(string depname)

@override

public boolean equals(object o)

@override

public int hashcode()

public book(string bookid, string name, string depname, string authdepname)

public book(string bookid, string name, string depname)

@override

public string tostring() ';

}public class authbook

public void setauthdepname(string authdepname)

public string getauthid()

public void setauthid(string authid)

public string getbookid()

public void setbookid(string bookid)

public string getdepname()

public void setdepname(string depname)

@override

public boolean equals(object o)

@override

public int hashcode()

@override

public string tostring() ';

}public authbook(string authid, string bookid, string depname, string authdepname) 初始化資料:

//授權記錄

list books =arrays.aslist(

new book(「1」,「電子書01」,「技術部」),

new book(「2」,「電子書02」,「技術部」),

new book(「3」,「電子書03」,「技術部」),

new book(「4」,「電子書04」,「技術部」),

new book(「7」,「電子書05」,「技術部」)

);list authsys = new arraylist<>();

//拿到的各個部門的資料

listauthbooks = arrays.aslist(

new authbook("1", "2", "技術部", "易學"),

new authbook("2", "2", "技術部", "語音"),

new authbook("3", "1", "技術部", "語音"),

new authbook("4", "4", "技術部", "易學"),

new authbook("5", "6", "技術部", "易學")

);

需求如下:

1.根據部門1 部門2 去授權記錄中拿各自都沒有的資料

2.根據選中的list 的bookid 與第一步撈的授權記錄中bookid進行比較

不相同 直接入庫

相同 判斷 授權部門是否相同

相同 修改讀寫許可權

不相同 新增該部門授權記錄資料

具體**:(只是簡單的寫了一下)

//拿到易學的

mapauthbookmap = authbooks.stream().filter(authbook -> authbook.getauthdepname().equals(「易學」)).collect(

collectors.tomap(authbook -> authbook.getbookid(), authbook -> authbook)

);//匹配易學要新增的

list booklist = books.stream().map(book -> ).collect(collectors.tolist()).stream().filter(book -> book != null).collect(tolist());

booklist.stream().foreach(system.out::println);

}private book jisuan(book book,mapauthbookmap)

return null;

}

for雙層迴圈詳解

include main x printf x d n x printf x d n x 123456788 int i,j,m 0,n 0 for i 0 i 2 i printf d n n 1 includemain system.out.println 首先程式會執行 給i初始化賦值0 然後...

Java跳出雙層for迴圈

例1 跳出單層迴圈 test public void test1 else 執行結果 i 0 i 1例2 跳過單層當次迴圈 test public void test2 else 執行結果 i 0 i 1i 3 i 4 例3 跳出雙層的內部當次迴圈 test public void test3 el...

JAVA終止迴圈體(單層迴圈 雙層迴圈)

充分利用迴圈可以提高程式的開發和執行效率,但是如果不注重迴圈中的演算法很容易導致程式的死迴圈,那將是程式的死穴。所以在迴圈體中要對可能出現的特殊情況使用break語句中斷迴圈。public class breakcyc system.out.println 在你發現第一只老鷹之前,告訴我都有什麼鳥。...