मैं एक काम में फंस गया हूँ। शायद कोई मेरी मदद कर सकता है? मुझे अज्ञात लंबाई के दो पूर्णांक सरणियाँ दी गई हैं जैसे Array 1 = {1, 4, 7, 3} और Array 2 = {1, 7}। मुझे एक तीसरा ऐरे वापस करना है जिसमें केवल पूर्णांक हैं जो केवल सरणी में से एक में हैं। तो इस मामले में, ऐरे 3 {4, 3} होगा। मैंने कुछ इस तरह की कोशिश की है:
public static void main(String[] args) {
int [] range = {2, 3, 4, 5, 6, 7};
int [] excludedValues = {1, 4, 6};
int [] exclusionRange = new int [range.length - excludedValues.length + 1];
for (int i = 0; i < range.length ; i++) {
if (range[i] != Arrays.binarySearch(excludedValues, range[i])) {
exclusionRange[i] = range[i];
}
}
System.out.println(Arrays.toString(exclusionRange)); // Should return {2, 3, 5, 7}
}
लेकिन यह (जाहिर है) बिल्कुल भी काम नहीं करता है। यहां आप उस सामग्री का विस्तृत विवरण देख सकते हैं जिसे वापस किया जाना चाहिए
आपकी सहायता के लिए अग्रिम धन्यवाद :)
5 जवाब
मैं बस सूचियों के जावा कार्यों में निर्मित का उपयोग करूंगा।
public static void main(String[] args)
{
int[] range = { 2, 3, 4, 5, 6, 7 };
int[] excludedValues = { 1, 4, 6 };
List<Integer> list = Arrays.stream(range).boxed().collect(Collectors.toList());
List<Integer> listE = Arrays.stream(excludedValues).boxed().collect(Collectors.toList());
list.removeAll(listE);
int[] exclusionRange = new int[list.size()];
for (int i = 0; i < list.size(); i++)
exclusionRange[i] = (int) list.get(i);
System.out.println(Arrays.toString(exclusionRange));
}
जेएस में हम इस तरह की समस्या को हल कर सकते हैं।
const fun = () => {
let range = [2, 3, 4, 5, 6, 7];
let excludedValues = [1, 4, 6];
let combineArr = [...range, ...excludeValues];
let tempObj = {}
for (let i =0;i<combineArr.length;i++) {
if (tempObj[combineArr[i]]) {
delete tempObj[combineArr[i]]
} else {
tempObj[combineArr[i]] = 1
}
}
return Object.keys(tempObj)
// System.out.println(Arrays.toString(exclusionRange));
}
आपके द्वारा लिंक की गई तस्वीर के अनुसार, मुझे विश्वास है कि आप ऐसा कुछ चाहते हैं
import java.util.Arrays;
public class MyClass {
public static int[] createRangeWithExclusions(int rangeStartInclusive,int rangeEndInclusive,int[] excludedValues){
int sz = rangeEndInclusive - rangeStartInclusive + 1;
for(int exclude : excludedValues){
if(exclude >= rangeStartInclusive && exclude <= rangeEndInclusive){
sz--;
}
}
int []ret = new int[sz];
int idx = 0;
for(int i = rangeStartInclusive; i <= rangeEndInclusive; i++){
boolean include = true;
for(int exclude : excludedValues){
if(i == exclude){
include = false;
break;
}
}
if(include){
ret[idx] = i;
idx++;
}
}
return ret;
}
public static void main(String args[]) {
int[] exlusions = {1,4,6};
int [] resp = createRangeWithExclusions(2, 7, exlusions);
System.out.println(Arrays.toString(resp));
}
}
यदि पूछे गए सरणी से सामान्य मानों को फ़िल्टर करना है, तो आप का उपयोग कर सकते हैं इस मुद्दे को हल करने के लिए अपाचे कॉमन्स कलेक्शंस लाइब्रेरी, जो बहुत सारे उपयोगिता कार्य देता है। हमारे उपयोग के मामले के लिए, आप disjunction
फ़ंक्शन का उपयोग कर सकते हैं।
List<Integer> list1 = Arrays.asList(1, 3, 4, 7);
List<Integer> list2 = Arrays.asList(1, 7, 2);
System.out.println(CollectionUtils.disjunction(list1, list2)); //order does not matter here
उत्पादन
[2, 3, 4]
public static int[] findExclusionRange(int[] range, int[] excludedValues) {
Set<Integer> unique = Arrays.stream(excludedValues)
.boxed()
.collect(Collectors.toSet());
return Arrays.stream(range)
.boxed()
.filter(v -> !unique.contains(v))
.distinct()
.mapToInt(i -> i)
.toArray();
}
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।