दिलचस्प पोस्ट
जावा में पूर्णांकों की सरणी के लिए क्रमांतरण एल्गोरिथम पटरियों: कैसे काम करता है प्रतिक्रिया ब्लॉक करने के लिए? व्यवसाय खाता से फेसबुक ऐप बनाना और प्रबंधित करना जावा: क्या मतलब है? संपत्ति / www निर्देशिका से फ़ाइलों का उपयोग करें स्पिनर चयनित आइटम पाठ प्राप्त करें? #ifdef सी # में मूल्य / टेक्स्ट बदलते सर्वर साइड के बाद टेक्स्ट बॉक्स से पाठ प्राप्त करें अतुल्यकालिक बनाम गैर-अवरोधन javafx स्वचालित रीसाइज़िंग और बटन पैडिंग आप किसी डेटाग्रिड दृश्य नियंत्रण में कॉलम का स्वचालित रूप से आकार कैसे बदल सकते हैं और उपयोगकर्ता को उसी ग्रिड पर कॉलम का आकार बदलने की अनुमति दे सकते हैं? क्यों मैं केवल एक स्पष्ट संस्करण 0 मिलता है? एक हाइपरलिंक में एक अलग पोर्ट नंबर के लिए सापेक्ष यूआरएल? JQuery के साथ चयनित तत्व पर क्लिक करें अनुकरण एएसपी.नेट एमवीसी में प्रवेश-नियंत्रण-अनुमति-उत्पत्ति की स्थापना करना – सरलतम संभव विधि

कैसे सूची / ArrayList से अधिकतम मूल्य प्राप्त करने के लिए

एक ArrayList है जो पूर्णांक मान को संग्रह करता है। मुझे इस सूची में अधिकतम मूल्य मिलना होगा। उदाहरण के लिए arrayList संचित मान हैं: 10, 20, 30, 40, 50 और अधिकतम मान 50 होगा।

अधिकतम मान को खोजने का कारगर तरीका क्या है?

@ एडिट: मुझे सिर्फ एक समाधान मिला है जिसके लिए मुझे पूरा यकीन नहीं है

 ArrayList<Integer> arrayList = new ArrayList<Integer>(); arrayList.add(100); /* add(200), add(250) add(350) add(150) add(450)*/ Integer i = Collections.max(arrayList) 

और यह सर्वोच्च मूल्य देता है।

प्रत्येक मूल्य की तुलना करने का एक अन्य तरीका उदा। selection sort or binaray sort algorithm

वेब के समाधान से एकत्रित समाधान "कैसे सूची / ArrayList से अधिकतम मूल्य प्राप्त करने के लिए"

आप जो आसानी से चाहते हैं उसे प्राप्त करने के लिए Collections API का उपयोग कर सकते हैं – कुशलतापूर्वक पढ़ें – संग्रह के लिए पर्याप्त Javadoc.max

 Collections.max(arrayList); 

अपने तत्वों के प्राकृतिक आदेश के अनुसार दिए गए संकलन के अधिकतम तत्व लौटाता है। संग्रह में सभी तत्वों को तुलनात्मक इंटरफेस लागू करना चाहिए।

यह सवाल लगभग एक वर्ष का है लेकिन मैंने पाया है कि यदि आप ऑब्जेक्ट के लिए एक कस्टम तुलनित्र बनाते हैं तो आप ऑब्जेक्ट्स की सरणी सूची के लिए कलेक्शन। मैक्स का उपयोग कर सकते हैं।

 import java.util.Comparator; public class compPopulation implements Comparator<Country> { public int compare(Country a, Country b) { if (a.getPopulation() > b.getPopulation()) return -1; // highest value first if (a.getPopulation() == b.Population()) return 0; return 1; } } ArrayList<Country> X = new ArrayList<Country>(); // create some country objects and put in the list Country ZZ = Collections.max(X, new compPopulation()); 
 public int getMax(ArrayList list){ int max = Integer.MIN_VALUE; for(int i=0; i<list.size(); i++){ if(list.get(i) > max){ max = list.get(i); } } return max; } 

मेरी समझ से, यह मूल रूप से संग्रह है। Max () करता है, हालांकि वे एक तुलनित्र का उपयोग करते हैं क्योंकि सूचियों सामान्य हैं

हम केवल Collections.max() उपयोग कर सकते हैं। Collections.max() और Collections.min() विधि।

 public class MaxList { public static void main(String[] args) { List l = new ArrayList(); l.add(1); l.add(2); l.add(3); l.add(4); l.add(5); System.out.println(Collections.max(l)); // 5 System.out.println(Collections.min(l)); // 1 } } 

बिना किसी क्रमबद्ध सूची में अधिकतम मान ढूंढने के लिए कोई विशेष रूप से प्रभावी तरीका नहीं है – आपको बस उन सभी को जांचना और सर्वोच्च मूल्य वापस करना होगा।

जावा 8 में संग्रह को लैम्ब्डा का उपयोग करके बढ़ाया गया है, इसलिए अधिकतम और न्यूनतम खोजना निम्नानुसार पूरा किया जा सकता है।

कोड:

 List<Integer> ints = Stream.of(12, 72, 54, 83, 51).collect(Collectors.toList()); System.out.println("the list: "); ints.forEach((i) -> { System.out.print(i + " "); }); System.out.println(""); Integer minNumber = ints.stream() .min(Comparator.comparing(i -> i)).get(); Integer maxNumber = ints.stream() .max(Comparator.comparing(i -> i)).get(); System.out.println("Min number is " + minNumber); System.out.println("Max number is " + maxNumber); 

आउटपुट:

  the list: 12 72 54 83 51 Min number is 12 Max number is 83 

धाराओं का उपयोग करके सूची में अधिकतम मान ढूंढने के तीन तरीके यहां दिए गए हैं:

 List<Integer> nums = Arrays.asList(-1, 2, 1, 7, 3); Optional<Integer> max1 = nums.stream().reduce(Integer::max); Optional<Integer> max2 = nums.stream().max(Comparator.naturalOrder()); OptionalInt max3 = nums.stream().mapToInt(p->p).max(); System.out.println("max1: " + max1.get() + ", max2: " + max2.get() + ", max3: " + max3.getAsInt()); 

इन सभी विधियों, जैसे Collections.max । मैक्स, पूरे संग्रह पर पुनरावृत्त करें, इसलिए उन्हें संग्रह के आकार के लिए समय की आवश्यकता होती है।

पूर्णांक वर्ग के औजारों को तुलनात्मक। इसलिए हम आसानी से पूर्णांक सूची का अधिकतम या न्यूनतम मूल्य प्राप्त कर सकते हैं।

 public int maxOfNumList() { List<Integer> numList = new ArrayList<>(); numList.add(1); numList.add(10); return Collections.max(numList); } 

अगर कोई क्लास तुलनात्मक नहीं करता है और हमें अधिकतम और न्यूनतम मूल्य मिलना है तो हमें अपना खुद का कम्पारेटर लिखना होगा।

 List<MyObject> objList = new ArrayList<MyObject>(); objList.add(object1); objList.add(object2); objList.add(object3); MyObject maxObject = Collections.max(objList, new Comparator<MyObject>() { @Override public int compare(MyObject o1, MyObject o2) { if (o1.getValue() == o2.getValue()) { return 0; } else if (o1.getValue() > o2.getValue()) { return -1; } else if (o1.getValue() < o2.getValue()) { return 1; } return 0; } }); 

यहाँ fucntion है

 public int getIndexOfMax(ArrayList<Integer> arr){ int MaxVal = arr.get(0); // take first as MaxVal int indexOfMax = -1; //returns -1 if all elements are equal for (int i = 0; i < arr.size(); i++) { //if current is less then MaxVal if(arr.get(i) < MaxVal ){ MaxVal = arr.get(i); // put it in MaxVal indexOfMax = i; // put index of current Max } } return indexOfMax; } 
 package in.co.largestinarraylist; import java.util.ArrayList; import java.util.Scanner; public class LargestInArrayList { public static void main(String[] args) { int n; ArrayList<Integer> L = new ArrayList<Integer>(); int max; Scanner in = new Scanner(System.in); System.out.println("Enter Size of Array List"); n = in.nextInt(); System.out.println("Enter elements in Array List"); for (int i = 0; i < n; i++) { L.add(in.nextInt()); } max = L.get(0); for (int i = 0; i < L.size(); i++) { if (L.get(i) > max) { max = L.get(i); } } System.out.println("Max Element: " + max); in.close(); } } 

आपके सरणी के आकार के आधार पर एक बहु-धागा समाधान भी चीजों को गति दे सकता है