मुझे पाइथन में सूचियों का इलाज करने का तरीका पसंद है। यह आसान और साफ दिखने के लिए कोई रिकर्सन समाधान करता है। उदाहरण के लिए एक सूची में तत्वों के सभी क्रमपरिवर्तन रही, पायथन में की विशिष्ट समस्या लगता है कि:क्या जावा में सूचियों को संभालने का कोई और शानदार तरीका है? (पायथन वीएस जावा)
def permutation_recursion(numbers,sol):
if not numbers:
print "this is a permutation", sol
for i in range(len(numbers)):
permutation_recursion(numbers[:i] + numbers[i+1:], sol + [numbers[i]])
def get_permutations(numbers):
permutation_recursion(numbers,list())
if __name__ == "__main__":
get_permutations([1,2,3])
मैं जिस तरह से पसंद करते हैं मैं कर सकते हैं सरल numbers[:i] + numbers[i+1:]
या sol + [numbers[i]]
तरह बातें कर रही द्वारा संशोधित सूचियों के नए उदाहरणों मिल
import java.util.ArrayList;
import java.util.Arrays;
class rec {
static void permutation_recursion(ArrayList<Integer> numbers, ArrayList<Integer> sol) {
if (numbers.size() == 0)
System.out.println("permutation="+Arrays.toString(sol.toArray()));
for(int i=0;i<numbers.size();i++) {
int n = numbers.get(i);
ArrayList<Integer> remaining = new ArrayList<Integer>(numbers);
remaining.remove(i);
ArrayList<Integer> sol_rec = new ArrayList<Integer>(sol);
sol_rec.add(n);
permutation_recursion(remaining,sol_rec);
}
}
static void get_permutation(ArrayList<Integer> numbers) {
permutation_recursion(numbers,new ArrayList<Integer>());
}
public static void main(String args[]) {
Integer[] numbers = {1,2,3};
get_permutation(new ArrayList<Integer>(Arrays.asList(numbers)));
}
}
ही प्रत्यावर्तन मैं क्या करने की जरूरत बनाने के लिए::
अगर मैं वास्तव में जावा में एक ही कोड करने के लिए प्रयास करते हैं, यह कैसा दिखता
ArrayList<Integer> remaining = new ArrayList<Integer>(numbers);
remaining.remove(i);
ArrayList<Integer> sol_rec = new ArrayList<Integer>(sol);
sol_rec.add(n);
जो काफी बदसूरत है और यह अधिक जटिल समाधानों के लिए और भी बदतर हो जाता है। this example
तो मेरा सवाल है ... क्या जावा एपीआई में कोई भी खरीदार ऑपरेटर या सहायक कार्य है जो इस समाधान को और अधिक "पायथनिक" बना देगा?
हमेशा ज्योथन है :) – Seth
शीर्षक में 'अधिक' अनिवार्य है - प्रश्न जावा में सूचियों के साथ काम करने के लिए कोई साफ तरीका होना चाहिए। और afaik, नहीं - कोई नहीं है। सटीक होने के लिए –