精华内容
下载资源
问答
  • 如题: 大概描述一下就是一个集合中放了N个图书实体类将这个集合中的所有id相同的实体类都,都新建存入一个list中 ...我要将他们加入到一个双重list集合中 但是筛选哪一步就不会了</p>
  • 程序中某段案例代码如下:Map> tMap = new HashMap>...程序运行抛出异常:java.lang.UnsupportedOperationException错误原因:为了快速创建List而使用了Arrays.asList方法,但此方法返回的Arra...

    程序中某段案例代码如下:

    Map> tMap = new HashMap>();

    tMap.put(name, Arrays.asList(new CronTrigger[] { trigger }));

    程序运行抛出异常:java.lang.UnsupportedOperationException

    错误原因:

    为了快速创建List而使用了Arrays.asList方法,但此方法返回的ArrayList不是java.util.ArrayList对象,而是Arrays的一个内部类。

    我们可以看下源码

    Arrays.class:

    @SafeVarargspublic static ListasList(T... a) {return new ArrayList<>(a);

    }---------------------------------------------------

    private static class ArrayList extends AbstractListimplementsRandomAccess, java.io.Serializable

    {private static final long serialVersionUID = -2764017481108945198L;private finalE[] a;

    ArrayList(E[] array) {if (array==null)throw newNullPointerException();

    a=array;

    }

    .....

    上述代码中可以看出内部类ArrayList继承了AbstractList,但是没有重写其add方法和remove方法,AbstractList中相关代码如下:

    public booleanadd(E e) {

    add(size(), e);return true;

    }public void add(intindex, E element) {throw newUnsupportedOperationException();

    }public E remove(intindex) {throw newUnsupportedOperationException();

    }

    这样就导致我们在把它当做java.util.ArrayList对象使用时调用方法add和remove会抛出 UnsupportedOperationException

    解决方法:

    1. 不使用Arrays.asList方法,直接new java.util.ArrayList(),然后依次添加对象(可能代码较多)。

    2. 依然使用Arrays.asList方法,但是要加转换,代码如下:

    tMap.put(name, new ArrayList(Arrays.asList(new CronTrigger[] { trigger })));

    展开全文
  • 原因:因为只创建了一个对象,赋值时会覆盖保存。...新建list集合,在循环中new Environment()对象。 String[] str = null; List<Environment> list = new ArrayList<Environment>(); S...

    原因:因为只创建了一个对象,赋值时会覆盖保存。
    解决办法:循环创建对象,每读取一行数据就创建一个对象。再list.add()添加进去。

    1. 新建list集合,在循环中new Environment()对象。
    		String[] str = null;
    		List<Environment> list = new ArrayList<Environment>();
    			String line;
    			while ((line = br.readLine()) != null) {
    				str = line.split("[|]");
    				Environment evn = new Environment();
    
    1. 温度湿度保存时需要将湿度与温度分开保存。
    //续
    				if (str[3].equals("16")) {
    					evn.setName("温度");
    					float Temperature = (float) ((Integer.parseInt(str[6].substring(0, 4), 16) * 0.00268127) - 46.85);
    					evn.setData(Temperature);
    					evn.setGather_date(new Timestamp(Long.parseLong(str[8])));
    					list.add(evn);
    
    1. 在添加完温度后,立即new一个新的Environment()对象,这时又开辟了一块新内存,将数据重新赋值保存。
    //续
    					Environment evn1 = new Environment();
    					evn1.setName("湿度");
    					float Humidity = (float) ((Integer.parseInt(str[6].substring(4, 8), 16) * 0.00190735) - 6);
    					evn1.setData(Humidity);
    					evn1.setGather_date(new Timestamp(Long.parseLong(str[8])));
    					list.add(evn1);
    				} else if (str[3].equals("256")) {
    					evn.setName("光照强度");
    					evn.setData(Integer.valueOf(str[6].substring(0, 4), 16));
    					evn.setGather_date(new Timestamp(Long.parseLong(str[8])));
    					list.add(evn);
    				} else if (str[3].equals("1280")) {
    					evn.setName("二氧化碳");
    					evn.setData(Integer.valueOf(str[6].substring(0, 4), 16));
    					evn.setGather_date(new Timestamp(Long.parseLong(str[8])));
    					list.add(evn);
    				}
    			}
    			br.close();
    }
    

    总结

    终于解决了这个问题,一开始粗心了把对象创建在循环之外,找了很久。真是效率太低了,我需要提高自己细心的能力,以及使自己变得聪明起来。

    展开全文
  • 新建的泛型集合List中添加对象

    千次阅读 2017-10-30 11:09:03
    这个其实很简单,但是不知道为什么我就是总忘。。。记不住,看来我有必要写下来。...List<MemberByKeyWord> list = new ArrayList();实例化这个实体类对象MemberByKeyWord mb = new MemberByKeyWord();然后 mb.se

    这个其实很简单,但是不知道为什么我就是总忘。。。记不住,看来我有必要写下来。
    这里先创建一个泛型集合 ,MemberByKeyWord这个是一个实体类。

    List<MemberByKeyWord> list = new ArrayList<MemberByKeyWord>();

    实例化这个实体类对象

    MemberByKeyWord mb = new MemberByKeyWord();

    然后

    mb.setAmount(amount);
    mb.setImgUrl(memheadportrait);
    mb.setName(name);
    mb.setTelphone(memtel);
    list.add(mb);

    list的add方法有好几个,可以根据不同的需要用不同的方法。
    如果你要循环插入好几个,就可以这样

    for(int i=0;i<10;i++){
    /**当插入多个的时候一定要在每次插入前新建对象,不然会导致最后list中放入的都是最后一次放入的对象*/
    MemberByKeyWord mb = new MemberByKeyWord();
    mb.setAmount(amount);
    mb.setImgUrl(memheadportrait);
    mb.setName(name);
    mb.setTelphone(memtel);
    list.add(i,mb);
    //list.add(mb);//这个方法也可以
    }

    完事了。
    感觉记忆力越来越差了。。。。。。。

    展开全文
  • java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) ...就像上一篇文章,有2个方法可以实现数组和list之间的转换,但是问题总是发生在你不知道的地方。

    java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:148)
    at java.util.AbstractList.add(AbstractList.java:108)
    就像上一篇文章,有2个方法可以实现数组和list之间的转换,但是问题总是发生在你不知道的地方。
    我领导兼同事,问我,你看看你那个new出来的list能不能add(),然后让我试一下。当然 ,在编写
    代码的时候,你add()是没问题的,当代码跑起来的时候,哦嘿,出问题啦,抛异常啦。如上的异常。

    然后

    分析原因:
    终其原因是Arrays.asList方法返回的ArrayList是继承自AbstractList同时实现了RandomAccess和Serializable接口,
    定义如下:

    	    public static <T> List<T> asList(T... a) {
            return new ArrayList<>(a);
        }

    子类是正常的复写了2个方法 get(index) 和 set(index,element),这俩能正常用,但是,add()和remove()就抛异常了

    	//。。。。
    	    private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable
    	
    	//我们再来看看AbstractList这个类的定义:
    	public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> 
    	
    	//这时我们发现AbstractList这个类的set add remove方法定义如下:
    	
            // 没被复写,使用的时候会抛异常的。
    	    public void add(int index, E element) {
            throw new UnsupportedOperationException();
        }
           // 没被复写,会抛异常的。
    	    public E remove(int index) {
            throw new UnsupportedOperationException();
        }
            // set方法被复写了,这个是正常的。
    	    public E set(int index, E element) {
            throw new UnsupportedOperationException();
        }

    现在知道了它throw UnsupportedOperationException异常的原因了。
    直接扔异常。so知道啦。
    通过上面的分析,我们知道,其实通过asList方法得到的List是只读的。
    怎样避免这样的错误

    	List<String> list = Lists.newArrayList(Arrays.asList(checkedData));//瓜娃的集合初始化的东西

    在新建个集合来接收这个arrays new 出来的集合。就没有异常啦。也可以避免问题。

    另外:

        private static void testArrayList() {
            int[] ints = {1, 2, 3, 4, 5};
            List list = Lists.newArrayList(Arrays.asList(ints));
            System.out.println("list's size is:" + list.size());
            System.out.println("list.get(0) 的类型:" + list.get(0).getClass());
            System.out.println("list.get(0) == ints:" + list.get(0).equals(ints));
    
            Integer[] ints_ = {1,2,3,4,5};
            List list_ = Arrays.asList(ints_);
            System.out.println("list_'size:" + list_.size());
            System.out.println("list_.get(0) 的类型:" + list_.get(0).getClass());
            System.out.println("list_.get(0) == ints_[0]:" + list_.get(0).equals(ints_[0]));
        }
    	//测试结果如下:
    	"C:\Program Files\Java\jdk1.8.0_73\bin\java"。。。
    	list's size is:1
    	list.get(0) 的类型:class [I
    	list.get(0) == ints:true
    	list_'size:5
    	list_.get(0) 的类型:class java.lang.Integer
    	list_.get(0) == ints_[0]:true
    
    	Process finished with exit code 0

    解释如下:
    程序的运行结果并没有像我们预期的那样是5而是逆天的1,这是什么情况?
    asList接受的参数是一个泛型的变长参数,我们知道基本数据类型是无法泛型化的,也就是说8个基本类型是无法作为asList的参数的, 要想作为泛型参数就必须使用其所对应的包装类型。但是这个这个实例中为什么没有出错呢?因为该实例是将int 类型的数组当做其参数,而在Java中数组是一个对象,它是可以泛型化的。所以该例子是不会产生错误的。既然例子是将整个int 类型的数组当做泛型参数,那么经过asList转换就只有一个int 的列表了
    所以:
    1.在使用asList时不要将基本数据类型当做参数。
    2.得到是个不可操作的集合。

    又更新了一下,之前的set是不会异常的,被正常复写了,get和set方法是被正常实现的,其他的比如add或者remove是不能用的。

     

    展开全文
  • Set集合转换成List集合

    千次阅读 2012-11-25 14:25:38
    //返回一个set集合赋值给 busiclis ...//新建一个list集合  List list = new ArrayList();  //把set集合转换成list集合  for(Busicli bus:busiclis){  System.out.println(bus.getBusicliId
  • javalist集合

    2017-07-12 19:40:00
    java集合中arraylist类是很方便...并且list集合是按照顺序进行排序的。 使用add方法可以为其赋值,非常的方便简单。可以添加各种不同的类型的值如下: 转载于:https://www.cnblogs.com/w7589/p/7157322.html...
  • List集合相关

    2020-03-01 15:41:26
    ArrayList源码底层使用的是数组,可以理解为ArrayList是数组的封装高级集合。 两者的主要区别: 1.Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。 2. Array大小是固定的,ArrayList的大小是动态...
  • List集合中对象去重

    2019-11-14 11:00:30
    遍历list集合新建map,通过id作为建,对象作为值 Map<Integer,Object> map = new HashMap<>(); for(Object object: list){ Integer in = object.getId(); map.put(in,object); } 将values放入list集合...
  • 判断List集合是否为空Java中,判断List集合是否为空与是否为null并不相同新建List对象,默认是为空,即没有数据,而不是null如:List list = new ArrayList();list1.size()==0和isEmpty()判断的是list1内的内容为空,...
  • 模糊查询list集合里面的数据 例如:我有一个集合,里面存了三个名字:张大三,张小三,李老四。现在我想根据参数 “张” 来模糊查询集合里符合条件的数据,也就是 “张大三”,“张小三” 这两条数据,那么应该怎么...
  • 最开始走了弯路,在循环外面新建了对象,然后保存在list集合里面的东西被覆盖,全是最后一次设置的值; config是方法的参数,里面有两个值appIds、companyCodes 封装的是list,要进行组合 例如:appIds里的值是A 、B...
  • Lambda处理List集合

    2018-12-08 13:54:00
    1、利用stream().forEach()循环处理List; List<...//新建一个List 用的google提供的Guava package com.google.common.collect;list.add("1");list.add("2");list.add("3");list.stream().fo...
  • 如何使用List集合

    2019-07-06 22:40:02
    1.list 是一个接口,不能直接new一个出来,但是他里面包含了很多子类最常用的要数ArraryList,用这个子类来实现List...当然也可以直接子类新建子类: ArrayList<Integer> list2=new ArrayList<>(); ...
  • 一、 List集合特有的功能概述 因为List集合继承与Collection,所有有些方法类似。详细介绍一些List特有的功能。List也是一个接口。故不能新建对象,所以我们调用子类ArrayList void add(int index,E element) 在...
  • 一、 List集合特有的功能概述因为List集合继承与Collection,所有有些方法类似。详细介绍一些List特有的功能。List也是一个接口。故不能新建对象,所以我们调用子类ArrayListvoid add(int index,E element)在指定...
  • Hibernate List集合

    2015-12-10 17:48:01
    1.新建一个maven项目HibernateDemo 2.编写pom.xml文件 xsi:schemaLocation="http://maven.apache.org/POM/4.0
  • Java 将枚举存入List集合

    万次阅读 2017-09-26 09:50:39
    基本思路就是新建一个字段跟枚举一致的类A,然后写个方法,获取枚举的值循环存入到list中,示例如下: 枚举类: // 套餐枚举 public enum BalanceType { balance_type0(0, "套餐1"), balance_type1(1, "套餐2"), ...
  • 1.文件--》新建--》项目。 2 ...2.选择为:控制台应用程序--》命名为:泛型集合List和Dictionary集合的使用。...4.List集合测试1:测试当前数据类型。...5.List集合测试2:求最大数使用Ma...
  • 去掉List集合中重复的Map对象

    千次阅读 2019-05-06 14:08:06
    去掉List集合中重复的Map对象 在日常开发,List集合中按某个属性删除集合里重复的对象的情况是常常要遇到的,这里提供一种比较有效率的删除方法。 public class Test { public static void main(String[] args) { ...
  • 简述判断一个list集合是否为空,我们的惯性思维是判断list是否等于null即可,但是在Java中,list集合为空还是为null,这是两码事。新建一个list对象,默认值是空,而非null;引用举个形象的例子,我有一个空着的水杯...
  • List集合的引入

    2016-08-26 16:35:49
    14.1新建一个User1实体类; package com.eduask.entity3; import java.util.List; import java.util.Map; public class User1 { private int id; private String name; private String pwd; ...
  • 简述判断一个list集合是否为空,我们的惯性思维是判断list是否等于null即可,但是在Java中,list集合为空还是为null,这是两码事。新建一个list对象,默认值是空,而非null;引用举个形象的例子,我有一个空着的水杯...
  • 默认情况下 ,保存在List集合中的数组是不进行排序的,不过可以通过使用Comparable接口自定义排序规则并自动排序。本实例将介绍如何使用Comparable接口自定义排序规则并自动排序。 实现过程 1)新建项目...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 564
精华内容 225
关键字:

新建list集合