{"id":199,"date":"2023-09-22T21:15:00","date_gmt":"2023-09-22T13:15:00","guid":{"rendered":"https:\/\/blog.bexonbai.com\/?p=199"},"modified":"2026-03-02T21:19:28","modified_gmt":"2026-03-02T13:19:28","slug":"java-map-lambda-the-alternative-forms-of-if-else","status":"publish","type":"post","link":"https:\/\/blog.bexonbai.com\/?p=199","title":{"rendered":"Java Map + lambda, the alternative forms of if-else"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">If your program has tons of&nbsp;<code>if-eles<\/code>&nbsp;like this, maybe you could try rewriting it as Map + Function.&nbsp;Function can be turned into lambda form to make it look more elegant. \ud83d\ude01<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>switch<\/strong> <strong>(<\/strong>type<strong>)<\/strong> <strong>{<\/strong>\n    <strong>case<\/strong> RANK:\n        searchRankBooks<strong>();<\/strong>\n        <strong>break<\/strong><strong>;<\/strong>\n    <strong>case<\/strong> RECOMMENDATION:\n        searchRecommendationBooks<strong>();<\/strong>\n        <strong>break<\/strong><strong>;<\/strong>\n    <strong>default<\/strong><strong>:<\/strong>\n        <strong>new<\/strong> <strong>ArrayList<\/strong><strong>&lt;>();<\/strong>\n        <strong>break<\/strong><strong>;<\/strong>\n<strong>}<\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Create a&nbsp;<code>Map&lt;String, Function&lt;K, V&gt;&gt;<\/code>&nbsp;in your service, use it to store if-else business functions.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>private<\/strong> <strong>Map<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>,<\/strong> <strong>Function<\/strong><strong>&lt;<\/strong>TYPE<strong>,<\/strong> <strong>List<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>>>><\/strong> bookSearchTypeMap <strong>=<\/strong> <strong>new<\/strong> <strong>HashMap<\/strong><strong>&lt;>();<\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Init a Function as value, Function can be written as the lambda, like this\ud83d\udc47<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bookSearchTypeMap<strong>.<\/strong>put<strong>(<\/strong>RANK<strong>.<\/strong>name<strong>(),<\/strong> type <strong>-><\/strong> bookTypeService<strong>.<\/strong>rank<strong>(<\/strong>type<strong>));<\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">use a&nbsp;<code>getResult(K)<\/code>&nbsp;to get results.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>public<\/strong> <strong>List<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>><\/strong> <strong>getResult<\/strong><strong>(<\/strong>TYPE type<strong>)<\/strong> <strong>{<\/strong>\n    <strong>Function<\/strong><strong>&lt;<\/strong>TYPE<strong>,<\/strong> <strong>List<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>>><\/strong> result <strong>=<\/strong> bookSearchTypeMap<strong>.<\/strong>get<strong>(<\/strong>type<strong>.<\/strong>name<strong>());<\/strong>\n    <strong>if<\/strong> <strong>(<\/strong>result <strong>!=<\/strong> <strong>null<\/strong><strong>)<\/strong> <strong>{<\/strong>\n        <strong>return<\/strong> result<strong>.<\/strong>apply<strong>(<\/strong>type<strong>);<\/strong>\n    <strong>}<\/strong>\n    <strong>return<\/strong> <strong>new<\/strong> <strong>ArrayList<\/strong><strong>&lt;>();<\/strong>\n<strong>}<\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Called it in the Controller.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>public<\/strong> <strong>List<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>><\/strong> <strong>books<\/strong><strong>(<\/strong>TYPE type<strong>){<\/strong>\n    <strong>return<\/strong> queryBookService<strong>.<\/strong>getResult<strong>(<\/strong>type<strong>);<\/strong>\n<strong>}<\/strong><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Log:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>><\/strong> Task :Main.main<strong>()<\/strong>\nrank&#91;Corpus Delicti, Die Insel der Tausend Leuchtt\u00fcrme, Dark Mirror Castle, Iron Flame \u2013 Flammengek\u00fcsst]\nrecommendation&#91;Die Insel der Tausend Leuchtt\u00fcrme, Vergissmeinnicht - Was bisher verloren war, Dark Shadow Castle, Fighting Fate]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Here is just one way to implement it, you can rewrite it a bit to use it in any framework.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Happy Coding!<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Full Demo\ud83d\udc68\u200d\ud83d\udcbb<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>public<\/strong> <strong>class<\/strong> <strong>QueryBookService<\/strong> <strong>{<\/strong>\n    <strong>private<\/strong> <strong>BookTypeService<\/strong> bookTypeService <strong>=<\/strong> <strong>new<\/strong> <strong>BookTypeService<\/strong><strong>();<\/strong>\n    <strong>private<\/strong> <strong>Map<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>,<\/strong> <strong>Function<\/strong><strong>&lt;<\/strong>TYPE<strong>,<\/strong> <strong>List<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>>>><\/strong> bookSearchTypeMap <strong>=<\/strong> <strong>new<\/strong> <strong>HashMap<\/strong><strong>&lt;>();<\/strong>\n\n    <strong>public<\/strong> <strong>QueryBookService<\/strong><strong>()<\/strong> <strong>{<\/strong>\n        bookSearchTypeMap<strong>.<\/strong>put<strong>(<\/strong>RANK<strong>.<\/strong>name<strong>(),<\/strong> type <strong>-><\/strong> bookTypeService<strong>.<\/strong>rank<strong>(<\/strong>type<strong>));<\/strong>\n        bookSearchTypeMap<strong>.<\/strong>put<strong>(<\/strong>RECOMMENDATION<strong>.<\/strong>name<strong>(),<\/strong> type <strong>-><\/strong> bookTypeService<strong>.<\/strong>recommendation<strong>(<\/strong>type<strong>));<\/strong>\n    <strong>}<\/strong>\n\n    <strong>public<\/strong> <strong>List<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>><\/strong> <strong>getResult<\/strong><strong>(<\/strong>TYPE type<strong>)<\/strong> <strong>{<\/strong>\n        <strong>Function<\/strong><strong>&lt;<\/strong>TYPE<strong>,<\/strong> <strong>List<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>>><\/strong> result <strong>=<\/strong> bookSearchTypeMap<strong>.<\/strong>get<strong>(<\/strong>type<strong>.<\/strong>name<strong>());<\/strong>\n        <strong>if<\/strong> <strong>(<\/strong>result <strong>!=<\/strong> <strong>null<\/strong><strong>)<\/strong> <strong>{<\/strong>\n            <strong>return<\/strong> result<strong>.<\/strong>apply<strong>(<\/strong>type<strong>);<\/strong>\n        <strong>}<\/strong>\n        <strong>return<\/strong> <strong>new<\/strong> <strong>ArrayList<\/strong><strong>&lt;>();<\/strong>\n    <strong>}<\/strong>\n<strong>}<\/strong><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>public<\/strong> <strong>class<\/strong> <strong>BookTypeService<\/strong> <strong>{<\/strong>\n    <strong>public<\/strong> <strong>List<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>><\/strong> <strong>rank<\/strong><strong>(<\/strong>TYPE type<strong>){<\/strong>\n        <strong>return<\/strong> <strong>getRank<\/strong><strong>(<\/strong>type<strong>);<\/strong>\n    <strong>}<\/strong>\n\n    <strong>public<\/strong> <strong>List<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>><\/strong> <strong>recommendation<\/strong><strong>(<\/strong>TYPE type<strong>){<\/strong>\n        <strong>return<\/strong> <strong>getRecommendation<\/strong><strong>(<\/strong>type<strong>);<\/strong>\n    <strong>}<\/strong>\n<strong>}<\/strong><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>public<\/strong> <strong>class<\/strong> <strong>BookSearchController<\/strong> <strong>{<\/strong>\n    <strong>private<\/strong> <strong>QueryBookService<\/strong> queryBookService <strong>=<\/strong> <strong>new<\/strong> <strong>QueryBookService<\/strong><strong>();<\/strong>\n\n    <strong>public<\/strong> <strong>List<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>><\/strong> <strong>books<\/strong><strong>(<\/strong>TYPE type<strong>){<\/strong>\n        <strong>return<\/strong> queryBookService<strong>.<\/strong>getResult<strong>(<\/strong>type<strong>);<\/strong>\n    <strong>}<\/strong>\n<strong>}<\/strong><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>public<\/strong> <strong>enum<\/strong> TYPE <strong>{<\/strong>\n    RANK<strong>,<\/strong> RECOMMENDATION\n<strong>}<\/strong><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><em>\/\/ Mocks<\/em>\n<strong>public<\/strong> <strong>class<\/strong> <strong>BookMocks<\/strong> <strong>{<\/strong>\n    <strong>public<\/strong> <strong>static<\/strong> <strong>List<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>><\/strong> <strong>getRank<\/strong><strong>(<\/strong>TYPE type<strong>)<\/strong> <strong>{<\/strong>\n        <strong>List<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>><\/strong> list <strong>=<\/strong> <strong>new<\/strong> <strong>ArrayList<\/strong><strong>&lt;>();<\/strong>\n        list<strong>.<\/strong>add<strong>(<\/strong>\"Corpus Delicti\"<strong>);<\/strong>\n        list<strong>.<\/strong>add<strong>(<\/strong>\"Die Insel der Tausend Leuchtt\u00fcrme\"<strong>);<\/strong>\n        list<strong>.<\/strong>add<strong>(<\/strong>\"Dark Mirror Castle\"<strong>);<\/strong>\n        list<strong>.<\/strong>add<strong>(<\/strong>\"Iron Flame \u2013 Flammengek\u00fcsst\"<strong>);<\/strong>\n        <strong>return<\/strong> list<strong>;<\/strong>\n    <strong>}<\/strong>\n\n    <strong>public<\/strong> <strong>static<\/strong> <strong>List<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>><\/strong> <strong>getRecommendation<\/strong><strong>(<\/strong>TYPE type<strong>)<\/strong> <strong>{<\/strong>\n        <strong>List<\/strong><strong>&lt;<\/strong><strong>String<\/strong><strong>><\/strong> list <strong>=<\/strong> <strong>new<\/strong> <strong>ArrayList<\/strong><strong>&lt;>();<\/strong>\n        list<strong>.<\/strong>add<strong>(<\/strong>\"Die Insel der Tausend Leuchtt\u00fcrme\"<strong>);<\/strong>\n        list<strong>.<\/strong>add<strong>(<\/strong>\"Vergissmeinnicht - Was bisher verloren war\"<strong>);<\/strong>\n        list<strong>.<\/strong>add<strong>(<\/strong>\"Dark Shadow Castle\"<strong>);<\/strong>\n        list<strong>.<\/strong>add<strong>(<\/strong>\"Fighting Fate\"<strong>);<\/strong>\n        <strong>return<\/strong> list<strong>;<\/strong>\n    <strong>}<\/strong>\n<strong>}<\/strong><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>public<\/strong> <strong>class<\/strong> <strong>Main<\/strong> <strong>{<\/strong>\n    <strong>public<\/strong> <strong>static<\/strong> <strong>void<\/strong> <strong>main<\/strong><strong>(<\/strong><strong>String<\/strong><strong>&#91;]<\/strong> args<strong>)<\/strong> <strong>{<\/strong>\n        <strong>BookSearchController<\/strong> controller <strong>=<\/strong> <strong>new<\/strong> <strong>BookSearchController<\/strong><strong>();<\/strong>\n\n        <strong>System<\/strong><strong>.<\/strong>out<strong>.<\/strong>println<strong>(<\/strong>\"rank\" <strong>+<\/strong> controller<strong>.<\/strong>books<strong>(<\/strong>RANK<strong>));<\/strong>\n        <strong>System<\/strong><strong>.<\/strong>out<strong>.<\/strong>println<strong>(<\/strong>\"recommendation\" <strong>+<\/strong> controller<strong>.<\/strong>books<strong>(<\/strong>RECOMMENDATION<strong>));<\/strong>\n\n    <strong>}<\/strong>\n<strong>}<\/strong><\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>An alternative form of if-else, provides an other way.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-199","post","type-post","status-publish","format-standard","hentry","category-develop"],"_links":{"self":[{"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=\/wp\/v2\/posts\/199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=199"}],"version-history":[{"count":1,"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=\/wp\/v2\/posts\/199\/revisions"}],"predecessor-version":[{"id":200,"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=\/wp\/v2\/posts\/199\/revisions\/200"}],"wp:attachment":[{"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}