笔记(不定时更新)

来源:互联网 发布:喜马拉雅 for mac版 编辑:程序博客网 时间:2024/04/28 06:24

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);

原创粉丝点击