JAVA開発メモ
重複オブジェクトの抽出 の変更点
 

[リロード]   [新規|編集|差分|添付]   [トップ|一覧|単語検索|最終更新|バックアップ|ヘルプ]

サイトメニュー
最新の20件
2018-08-012018-02-222016-12-222015-06-242013-07-032013-02-262011-01-122010-06-082010-03-092010-03-032009-12-302009-10-302009-02-252009-02-242009-02-112008-09-242008-09-232008-09-16



  *List から重複しているオブジェクトを抽出する
  
  データオブジェクト
   public class TestBean {
       public String id1;
       public String id2;
       public TestBean(String id1, String id2) {
           super();
           this.id1 = id1;
           this.id2 = id2;
       }
       public String getId1() {
           return id1;
       }
       public void setId1(String id1) {
           this.id1 = id1;
       }
       public String getId2() {
           return id2;
       }
       public void setId2(String id2) {
           this.id2 = id2;
       }
       @Override
       public int hashCode() {
           final int prime = 31;
           int result = 1;
           result = prime * result + ((id1 == null) ? 0 : id1.hashCode());
           result = prime * result + ((id2 == null) ? 0 : id2.hashCode());
           return result;
       }
       @Override
       public boolean equals(Object obj) {
           if (this == obj)
               return true;
           if (obj == null)
               return false;
           if (getClass() != obj.getClass())
               return false;
           TestBean other = (TestBean) obj;
           if (id1 == null) {
               if (other.id1 != null)
                   return false;
           } else if (!id1.equals(other.id1))
               return false;
           if (id2 == null) {
               if (other.id2 != null)
                   return false;
           } else if (!id2.equals(other.id2))
               return false;
           return true;
       }
   }
  
  **重複しているオブジェクトを各種ひとつ抽出する
   public class TestUtil {
       public static <T> List<T> overlapList(List<T> inputList) {
           List<T> outputList = new ArrayList<T>();
           for (int i = 0; i < inputList.size(); i++) {
               T object = inputList.get(i);
               for (int j = i + 1; j < inputList.size(); j++) {
                   if (object != null && object.equals(inputList.get(j)) && !outputList.contains(object)) {
                       outputList.add(object);
                       break;
                   }
               }
           }
           return outputList;
       }
       // 重複したid1とid2を出力
       public static void main(String[] args) {
           List<TestBean> testList = new ArrayList<TestBean>();
           testList.add(new TestBean("a", "a"));
           testList.add(new TestBean("a", "b"));
           testList.add(new TestBean("a", "a"));
           testList.add(new TestBean("a", "b"));
           testList.add(new TestBean("a", "c"));
           for (TestBean testBean : overlapList(testList)) {
               System.out.println("id1:" + testBean.getId1() + " id2:"
                       + testBean.getId2());
               System.out.println("id1:" + testBean.getId1() + " id2:" + testBean.getId2());
           }
       }
   }
  
  出力結果
   id1:a id2:a
   id1:a id2:b
  
  **重複しているオブジェクトを全て抽出する
   public class TestUtil {
       public static <T> List<T> overlapAllList(List<T> inputList) {
           List<T> outputList = new ArrayList<T>();
           for (int i = 0; i < inputList.size(); i++) {
               T object = inputList.get(i);
               for (int j = 0; j < inputList.size(); j++) {
                   if (i != j && object != null && object.equals(inputList.get(j))) {
                       outputList.add(object);
                       break;
                   }
               }
           }
           return outputList;
       }
       // 重複したid1とid2を出力
       public static void main(String[] args) {
           List<TestBean> testList = new ArrayList<TestBean>();
           testList.add(new TestBean("a", "a"));
           testList.add(new TestBean("a", "b"));
           testList.add(new TestBean("a", "a"));
           testList.add(new TestBean("a", "b"));
           testList.add(new TestBean("a", "c"));
           for (TestBean testBean : overlapAllList(testList)) {
               System.out.println("id1:" + testBean.getId1() + " id2:" + testBean.getId2());
           }
       }
   }
  
  出力結果
   id1:a id2:a
   id1:a id2:b
   id1:a id2:a
   id1:a id2:b
  
  *配列から重複しているオブジェクトを抽出する
  オブジェクト配列の場合
   public static <T> List<T> overlapArray(T[] inputArray) {
       List<T> outputList = new ArrayList<T>();
       for (int i = 0; i < inputArray.length; i++) {
           T object = inputArray[i];
           for (int j = i + 1; j < inputArray.length; j++) {
               if (object != null && object.equals(inputArray[j]) && !outputList.contains(object)) {
                   outputList.add(object);
                   break;
               }
           }
       }
       return outputList;
   }
  
   public static <T> List<T> overlapAllArray(T[] inputArray) {
       List<T> outputList = new ArrayList<T>();
       for (int i = 0; i < inputArray.length; i++) {
           T object = inputArray[i];
           for (int j = 0; j < inputArray.length; j++) {
               if (i != j && object != null && object.equals(inputArray[j])) {
                   outputList.add(object);
                   break;
               }
           }
       }
       return outputList;
   }

リロード   新規 編集 差分   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Last-modified: Wed, 24 Sep 2008 09:12:12 JST (4343d)

Modified by MT22(Moriwaki Takashi)

"PukiWiki" 1.3.7 Copyright © 2001,2002,2003 PukiWiki Developers Team. License is GNU/GPL.
Based on "PukiWiki" 1.3 by sng
Powered by PHP 5.3.29

HTML convert time to 0.012 sec.