2017-05-24 6 views
1

同じオブジェクトを持つリストが2つあります。リストに同じ要素が含まれていないかチェックしてから、他のリストに値を入力してください

List<Object1> list1; 
List<Object1> list2; 

for (Object1 objectItem : list1.getList()) { 
    // I want to check if objectItem exists in list2 without using another for loop and then compare their other values 
    // Something like list2.getList().contains(objectItem).getThisValueMethod(); 
} 

これは可能ですか?

+0

は、この[ポスト](https://stackoverflow.com/questions/2762093/java-compare-two-lists)は、この問題に答えていたとし、それは役に立つかもしれません。 –

+0

カスタムオブジェクトに 'equals'を実装しましたか? –

+0

'List'はどのようにインスタンス化されていますか?例えば'ArrayList'? – Yahya

答えて

2

このExplanation in Comments)を考えてみましょう:

// Suppose you have two lists of Objects (Strings in this case) 
List<String> list1 = new ArrayList<String>(); 
List<String> list2 = new ArrayList<String>(); 

//fill them with some example data 
list1.add("1"); list1.add("2"); list1.add("3"); 
list2.add("0"); list2.add("1"); list2.add("2"); 

// Now you can use ONE for-loop as you asked to check equality 
for (String s : list1) { 
    if(list2.contains(s)){ // use contains() method which returns true if the Object found 
    // indexOf(Object) this method return the index of the given Object in the list 
    // get(int index) this return the OBJECT from the list 
    // and because Java works by passing reference of object -> you can directly invoke any method 
    // that is originally in that Object Class 

     list2.get(list2.indexOf(s)); // you can invoke a method on it 
    // because in this case it's a String I can invoke any method from Class String 
    // on the the above-object, for example 
     list2.get(list2.indexOf(s)).trim(); // this method to remove leading spaces.. and so on 

     System.out.println(list2.get(list2.indexOf(s))); // for testing 
    } 
} 
+0

そのリストの中にリストを追加するようなことをすればどうなりますか? 1つのforループのみを使用しているときに内部リストの値を比較することは可能ですか? –

関連する問題