如何在 Java 中减去两个列表/数组的值?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/40644999/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to subtract values of two lists/arrays in Java?
提问by Voodoothechild
I am working on a Java project and I am having a problem. I want to have the subtract of two lists or arrays a and b in list/array c but I don't know how to do that. I want "a[i] -b[i]" should be in next list c where the value should be c[i]
similarly for 5-2=3 any suggestion and help would be appreciated.
我正在处理一个 Java 项目,但遇到了问题。我想在列表/数组 c 中减去两个列表或数组 a 和 b,但我不知道该怎么做。我希望 "a[i] -b[i]" 应该在下一个列表 c 中,其中c[i]
5-2=3的值应该类似,任何建议和帮助将不胜感激。
Code:
代码:
public static void l?nge() {
{
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(new File("C:\Users/Voodoothechild/Desktop/Pidata/Anfang.txt")));
String line = null;
while ((line = br.readLine()) != null) {
{
BufferedReader bro = null;
try {
bro = new BufferedReader(new FileReader(new File("C:\Users/Voodoothechild/Desktop/Pidata/Ende.txt")));
String lines = null;
while ((lines = br.readLine()) != null) {
String[] anfang = line.split("\n");
String[] ende = lines.split("\n");
List<Integer> an = new ArrayList<Integer>();
List<Integer> en = new ArrayList<Integer>();
for (int index = 0 ; index<ende.length ; index++) {
an.add(Integer.parseInt(anfang[index]));
en.add(Integer.parseInt(ende[index]));
Integer[] anf = new Integer[an.size()];
int[] result = new int[anf.length];
for (int i = 0; i < result.length; i++) {
result[i] = anf[i] - end[i];
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bro != null) {
try {
bro.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
} catch(FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
}
}
回答by Aurora_Titanium
Its pretty straight forward. Before tackling a programming problem. Always do it in steps. Take your problem for example. You need to subtract values from 2 arrays with values.
它非常直接。在解决编程问题之前。始终按步骤进行。以你的问题为例。您需要从 2 个带有值的数组中减去值。
int[] list1 = {4,2,1};
int[] list2 = {2,2,-1};
int[] list1 = {4,2,1};
int[] list2 = {2,2,-1};
Now you have 2 list. Ok next step, write a loop to go through the list. But first make sure that both list have the same length or else you will get an index out of bounce.
现在你有 2 个列表。好的下一步,写一个循环来遍历列表。但首先要确保两个列表具有相同的长度,否则你会得到一个跳出的索引。
for(int i =0; i< list1.length; i++)
{
list3[i] = list1[i] - list2[i];
}
Anyway here is the full answer. Be sure to understand it
无论如何,这里是完整的答案。一定要明白
public class subtract {
公共课减法{
public static void main(String[] args)
{
int[] list1 = {4,2,1};
int[] list2 = {2,2,-1};
int[] list3 = new int[list1.length];
//Looping the list
for(int i =0; i< list1.length; i++)
{
list3[i] = list1[i] - list2[i];
}
//Print Statement
for(int j =0; j< list3.length; j++)
{
System.out.println(list3[j]);
}
}
}
}
回答by Grzegorz Piwowarek
It can be done easily using Stream API:
使用 Stream API 可以轻松完成:
int[] list1 = {4,2,1};
int[] list2 = {2,2,-1};
IntStream.range(0, list1.length)
.mapToObj(i -> list1[i] - list2[i])
.collect(Collectors.toList());
or even easier using Javaslang:
甚至更容易使用 Javaslang:
Stream.range(0, list1.length)
map(i -> list1[i] - list2[i]);
or by zipping two lists together:
或者将两个列表压缩在一起:
List.ofAll(list1)
.zip(List.ofAll(list2))
.map(t -> t._1 - t._2);
回答by m4heshd
Here's a very simple answer you can apply to your program.
这是一个非常简单的答案,您可以将其应用到您的程序中。
public static void main(String[] args) {
int[] a = new int[4];
int[] b = new int[4];
int[] c = new int[4];
a[0] = 5;
a[1] = 12;
a[2] = 20;
a[3] = 50;
b[0] = 1;
b[1] = 2;
b[2] = 3;
b[3] = 4;
for(int i=0; i<a.length; i++){
c[i] = a[i] - b[i];
System.out.println(c[i]);
}
}
回答by jlbofh
The answer is the method removeAllof class Collection
答案是Collection类的removeAll方法
ArrayList<Integer> s1 = new ArrayList<Integer>(Arrays.asList(a1));
ArrayList<Integer> s2 = new ArrayList<Integer>(Arrays.asList(a2));
s1.removeAll(s2);
Integer[] result = s1.toArray(new Integer[s1.size()]);