मेमना इंडेंटेशन के साथ मैं क्या हासिल करना चाहता हूं वह निम्नलिखित है:
बहु-पंक्ति विवरण:
String[] ppl = new String[] { "Karen (F)", "Kevin (M)", "Lee (M)", "Joan (F)", "Des (M)", "Rick (M)" };
List<String> strings = Arrays.stream(ppl)
.filter(
(x) ->
{
return x.contains("(M)");
}
).collect(Collectors.toList());
strings.stream().forEach(System.out::println);
एकल-पंक्ति विवरण:
List<String> strings = Arrays.stream(ppl)
.map((x) -> x.toUpperCase())
.filter((x) -> x.contains("(M)"))
.collect(Collectors.toList());
वर्तमान में, ग्रहण निम्नलिखित के लिए स्वत: स्वरूपण कर रहा है:
बहु-पंक्ति विवरण:
String[] ppl = new String[] { "Karen (F)", "Kevin (M)", "Lee (M)", "Joan (F)", "Des (M)", "Rick (M)" };
List<String> strings = Arrays.stream(ppl).filter((x) ->
{
return x.contains("(M)");
}).collect(Collectors.toList());
strings.stream().forEach(System.out::println);
एकल-पंक्ति विवरण:
String[] ppl = new String[] { "Karen (F)", "Kevin (M)", "Lee (M)", "Joan (F)", "Des(M)", "Rick (M)" };
List<String> strings = Arrays.stream(ppl).map((x) -> x.toUpperCase())
.filter((x) -> x.contains("(M)")).collect(Collectors.toList());
strings.stream().forEach(System.out::println);
और मुझे यह वास्तव में गन्दा लगता है, इस वजह से कि collect
कॉल सीधे कैसे नीचे return
आती है और इसमें कोई स्पेस इनबेटन नहीं है। मैं इसे पसंद करूंगा अगर मैं एक नई लाइन में लंबू को इंडेंट कर सकता हूं, और ताकि .filter(
कॉल कॉल के ठीक ऊपर हो .collect(
। हालांकि, एकमात्र चीज जो मानक जावा -8 एक्लिप्स फॉर्मैटर के साथ अनुकूलित की जा सकती है, लैम्ब्डा बॉडी की शुरुआत में ब्रेस है, लेकिन ()
पहले से ब्रैकेट्स के लिए कुछ भी नहीं , न ही इंडेंटेशन।
और सिंगल-लाइन कॉल के मामले में, यह मूल लाइन-रैप का उपयोग करता है और इसे एक जंजीर गड़बड़ बनाता है। मुझे नहीं लगता कि मुझे यह समझाने की आवश्यकता है कि इसके बाद डिक्रिप्ट करना कठिन क्यों है।
वहाँ किसी भी तरह से अधिक स्वरूपण को अनुकूलित करने और ग्रहण में पहले स्वरूपण प्रकार को प्राप्त करने का कोई तरीका है? (या, वैकल्पिक रूप से, इंटेलीज आईडीईए की तरह एक और आईडीई में।)
संपादित करें: मैं निकटतम हो सकता था इंटेलीज आईडीईए 13 सामुदायिक संस्करण (पढ़ें: नि: शुल्क संस्करण: पी) जो निम्नलिखित था (निरंतर इंडेंटेशन द्वारा परिभाषित किया गया था जो इस मामले में 8 है):
public static void main(String[] args)
{
int[] x = new int[] {1, 2, 3, 4, 5, 6, 7};
int sum = Arrays.stream(x)
.map((n) -> n * 5)
.filter((n) -> {
System.out.println("Filtering: " + n);
return n % 3 != 0;
})
.reduce(0, Integer::sum);
List<Integer> list = Arrays.stream(x)
.filter((n) -> n % 2 == 0)
.map((n) -> n * 4)
.boxed()
.collect(Collectors.toList());
list.forEach(System.out::println);
System.out.println(sum);
यह इस तरह से जंजीर विधि मंगाने को "संरेखित" करने की अनुमति देता है:
int sum = Arrays.stream(x)
.map((n) -> n * 5)
.filter((n) -> {
System.out.println("Filtering: " + n);
return n % 3 != 0;
})
.reduce(0, Integer::sum);
List<Integer> list = Arrays.stream(x)
.filter((n) -> n % 2 == 0)
.map((n) -> n * 4)
.boxed()
.collect(Collectors.toList());
list.forEach(System.out::println);
System.out.println(sum);
}
मुझे व्यक्तिगत रूप से लगता है कि जबकि यह अधिक समझ में आता है, दूसरा संस्करण इसे बहुत दूर धकेलता है, इसलिए मैं पहले वाले को पसंद करता हूं।
पहले सेटअप के लिए जिम्मेदार सेटअप निम्नलिखित है:
<?xml version="1.0" encoding="UTF-8"?>
<code_scheme name="Zhuinden">
<option name="JD_ALIGN_PARAM_COMMENTS" value="false" />
<option name="JD_ALIGN_EXCEPTION_COMMENTS" value="false" />
<option name="JD_ADD_BLANK_AFTER_PARM_COMMENTS" value="true" />
<option name="JD_ADD_BLANK_AFTER_RETURN" value="true" />
<option name="JD_P_AT_EMPTY_LINES" value="false" />
<option name="JD_PARAM_DESCRIPTION_ON_NEW_LINE" value="true" />
<option name="WRAP_COMMENTS" value="true" />
<codeStyleSettings language="JAVA">
<option name="KEEP_FIRST_COLUMN_COMMENT" value="false" />
<option name="BRACE_STYLE" value="2" />
<option name="CLASS_BRACE_STYLE" value="2" />
<option name="METHOD_BRACE_STYLE" value="2" />
<option name="ELSE_ON_NEW_LINE" value="true" />
<option name="WHILE_ON_NEW_LINE" value="true" />
<option name="CATCH_ON_NEW_LINE" value="true" />
<option name="FINALLY_ON_NEW_LINE" value="true" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="SPACE_WITHIN_BRACES" value="true" />
<option name="SPACE_BEFORE_IF_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_WHILE_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_FOR_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_TRY_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_CATCH_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_SWITCH_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_SYNCHRONIZED_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="true" />
<option name="METHOD_PARAMETERS_WRAP" value="1" />
<option name="EXTENDS_LIST_WRAP" value="1" />
<option name="THROWS_LIST_WRAP" value="1" />
<option name="EXTENDS_KEYWORD_WRAP" value="1" />
<option name="THROWS_KEYWORD_WRAP" value="1" />
<option name="METHOD_CALL_CHAIN_WRAP" value="2" />
<option name="BINARY_OPERATION_WRAP" value="1" />
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
<option name="ASSIGNMENT_WRAP" value="1" />
<option name="IF_BRACE_FORCE" value="3" />
<option name="DOWHILE_BRACE_FORCE" value="3" />
<option name="WHILE_BRACE_FORCE" value="3" />
<option name="FOR_BRACE_FORCE" value="3" />
<option name="PARAMETER_ANNOTATION_WRAP" value="1" />
<option name="VARIABLE_ANNOTATION_WRAP" value="1" />
<option name="ENUM_CONSTANTS_WRAP" value="2" />
</codeStyleSettings>
</code_scheme>
मैंने यह सुनिश्चित करने की कोशिश की कि सब कुछ उचित है, लेकिन मैंने कुछ गड़बड़ कर दी है, इसलिए इसे मामूली समायोजन की आवश्यकता हो सकती है।
यदि आप मेरी तरह हंगेरियन हैं और आप हंगेरियन लेआउट का उपयोग कर रहे हैं, तो यह कीमैप आपके काम आ सकता है, ताकि आप अंत में AltGR + F, AltGR + G, AltGR + B का उपयोग करने में सक्षम न हों। , AltGR + N और AltGR + M (जो Ctrl + Alt के अनुरूप है)।
<?xml version="1.0" encoding="UTF-8"?>
<keymap version="1" name="Default copy" parent="$default">
<action id="ExtractMethod">
<keyboard-shortcut first-keystroke="shift control M" />
</action>
<action id="GotoImplementation">
<mouse-shortcut keystroke="control alt button1" />
</action>
<action id="GotoLine">
<keyboard-shortcut first-keystroke="shift control G" />
</action>
<action id="Inline">
<keyboard-shortcut first-keystroke="shift control O" />
</action>
<action id="IntroduceField">
<keyboard-shortcut first-keystroke="shift control D" />
</action>
<action id="Mvc.RunTarget">
<keyboard-shortcut first-keystroke="shift control P" />
</action>
<action id="StructuralSearchPlugin.StructuralReplaceAction" />
<action id="Synchronize">
<keyboard-shortcut first-keystroke="shift control Y" />
</action>
</keymap>
जबकि इंटेलीज ने लैंबडा के शुरुआती ब्रेस को एक नई लाइन में डालने का एक तरीका प्रदान नहीं किया है, अन्यथा यह स्वरूपण का एक उचित तरीका है, इसलिए मैं इसे स्वीकार करूँगा।
.filter(x -> x.contains("(M)"))
? बहुत सरल ... यदि आप वास्तव में उन स्थानों के बारे में बात कर रहे हैं, जहां आपको कई बयानों की आवश्यकता है, तो उदाहरण देना बेहतर होगा, जिसकी आवश्यकता थी।