1. 程式人生 > >筆記(不定時更新)

筆記(不定時更新)

1、java.lang.UnsupportedOperationException

今天開發時遇到了這樣一個異常java.lang.UnsupportedOperationException

    引起異常程式碼:

       1.String[] strs = new String[]{"a","b"};

       2. List<String> strList = Arrays.asList(strs);

       3. strList.add("c");

      在第三行丟擲的異常

      經分析java原始碼Arrys.asList();方法返回的不是平常熟悉的java.util.ArrayList類的物件。而是Arrays類的內部類的物件,而Arrays類裡的內部類ArrayList沒有實現AbstractList類的add,removeAll等方法,導致拋此異常! strList.add("c");這行程式碼呼叫的add方法實際上是這樣的:

public boolean add(E e) {

        add(size(), e);

        return true;

    }     

public void add(int index, E element) {

        throw new UnsupportedOperationException();

    }

      解決方法:

            String[] strs = new String[]{"a","b"};

       List<String> strList = new ArrayList<String>(Arrays.asList(strs));

       strList.add("c");

 2、List<String> 去重複(不一定是String ,其他物件也可以,不過好像要重寫equals方法,有興趣的可以嘗試一下)

普遍的方法是遍歷取出來,放進去前判斷是否存在,存在則不新增,不存在則新增。

這裡介紹一種快捷的辦法,就是利用set<String> 因為set要求裡面的內容是不能重複的,即利用set的特性進行過濾一下

   List<String> dictList = new ArrayList<String>();
  dictList.add("123");
  dictList.add("456");
  dictList.add("123");
  Set<String> dictSet = new HashSet<String>(dictList);
  dictList = new ArrayList<String>(dictSet);