1

私は本当にJavaが初めてです。2 つの配列の間で新しいアイテムと以前のアイテムを知る必要があります。例:

A1= {4,5,6};
A2={5,6,7};
result: new item is 7
    former item is 4. 

私は結果なしでこのコードを試します:

import java.util.Arrays;
import java.util.List; 
Integer[] s1 = {4, 5, 6};
  Integer[] s2 = {5,6,7};
  List<Integer> s1List = new ArrayList(Arrays.asList(s1));
  for (Integer s : s2) {
    if (s1List.contains(s)) {
      s1List.remove(s);
    } 
    else {
      s1List.add(s);
    }
    System.out.println("nouveaux items =" + s1List);

  }

これどうやってするの ?

4

3 に答える 3

2

あなたがしようとしていると私が理解しているのは:

Integer[] s1 = {3, 4, 5, 6};
Integer[] s2 = {3, 5, 6, 7};
List<Integer> newItems = new ArrayList<Integer>(Arrays.asList(s1));
newItems.removeAll(Arrays.asList(s2));
List<Integer> formerItems = new ArrayList<Integer>(Arrays.asList(s2));
formerItems.removeAll(Arrays.asList(s1));
System.out.println("New items: " + newItems);
System.out.println("Former items: " + formerItems);

出力:

New items: [7]
Former items: [4]
于 2013-03-27T15:58:01.463 に答える
0

Uはほとんどそこにあります.2つのリストを追加するだけです.s1Listは古いアイテムと新しいアイテムの新しいリストです

List<Integer> s1List = new ArrayList(Arrays.asList(s1));
List<Integer> newList = new ArrayList();

for (Integer s : s2) {
if (s1List.contains(s)) {
   s1List.remove(s);
 } 
 else {
   newList.add(s);
 }

}
于 2013-03-27T16:00:51.550 に答える
0

2 つの配列 a1 と a2 が与えられた場合、以前の項目は a2 ではなく a1 に存在するものになり、new は正反対になります。これが意図したものであると仮定すると、関数newItem(a1, a2)は a1 ではなく a2 に存在する項目を検索します。ロジックが同じままであるため、スワップされた配列をformerItems()使用するだけです。newItems()

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class FormerAndLast {

    public static void main(String[] args) {

        Integer[] s1 = { 4, 5, 6 };
        Integer[] s2 = { 5, 6, 7 };

        System.out.println("nouveaux items =" + newItems(s1, s2));

        System.out.println("former items =" + formerItems(s1, s2));
    }

    private static List<Integer> formerItems(Integer[] s1, Integer[] s2) {
        return newItems(s2, s1);
    }

    private static List<Integer> newItems(Integer[] a1, Integer[] a2) {
        List<Integer> list1 = Arrays.asList(a1);
        List<Integer> list2 = Arrays.asList(a2);

        List<Integer> newItems = new ArrayList<Integer>();

        for (Integer i : list2) {
            if (!list1.contains(i))
                newItems.add(i);
        }

        return newItems;
    }
}

PS: Java の実行可能コードは、main などの関数に常駐する必要があります (初期化を除く)。

于 2013-03-27T16:01:39.227 に答える