Java 类型列表中的方法addAll(集合<;?扩展对象[]>;);对象[]>;不适用于参数(列表<;字符串>;)
我成功地获得了两个日期之间的月份列表,现在我想将此列表添加到另一个对象列表中,我使用了Java 类型列表中的方法addAll(集合<;?扩展对象[]>;);对象[]>;不适用于参数(列表<;字符串>;),java,collections,Java,Collections,我成功地获得了两个日期之间的月份列表,现在我想将此列表添加到另一个对象列表中,我使用了addAll,但出现了以下错误: 方法addAll(CollectionChange List<Object[]> results; to List<Object> results; 列出结果; 到 列出结果; 或改变 List<String> dateObj = new ArrayList<String>(); to Li
addAll
,但出现了以下错误:
方法addAll(CollectionChange
List<Object[]> results;
to
List<Object> results;
列出结果;
到
列出结果;
或改变
List<String> dateObj = new ArrayList<String>();
to
List<Character[]> dateObj = new ArrayList<>();
and then to add elements to dateObj, use
dateObj.add(d.toCharArray());
List dateObj=new ArrayList();
到
List dateObj=new ArrayList();
然后要向dateObj添加元素,请使用
dateObj.add(d.toCharArray());
您的结果列表需要对象数组作为其元素。字符串不是对象数组,它只是一个对象。第一个方法指定结果列表需要对象作为其元素。第二个方法确保将对象数组传递给结果。您可以选择使用您需要的对象。您的对象添加到dateObj应该是日期和计数ListdateObj=newarraylist();
public void nbrrep(ActionEvent e){
列出结果;
ListdateObj=新的ArrayList();
日期;
日期a;
Calendar beginCalendar=Calendar.getInstance();
Calendar finishCalendar=Calendar.getInstance();
开始日历设置时间(日期);
finishCalendar.setTime(日期a);
while(开始日历(结束日历之前)){
Date datediff=beginCalendar.getTime();
beginCalendar.add(Calendar.MONTH,1);
fC=Calendar.getInstance();
Calendar fCa=Calendar.getInstance();
fC.设置时间(datediff);
fCa.设置时间(datediff);
int year=fCa.get(日历年);
字符串d=fC.getDisplayName(fC.MONTH、fC.LONG、Locale.FRANCE)+年;
Object[]obj=新对象[2];
obj[0]=d;
obj[1]=1;
日期对象添加(对象);
}
Query Query=entityManager.createQuery(“选择r.dateheurerep,从修复r中将(r)计数为nbrr”+”,其中r.dateheurerep>=:date\u de和r.dateheurerep您的结果
变量的类型为“对象数组列表”
您的dateObj
变量的类型为“字符串列表”
在Java中,List
和array
([]
)是完全不同的结构,它们彼此不兼容。这正是您引用的错误消息所说的
解决问题的一种方法是在将dateObj
列表添加到result
()之前将其转换为数组
但是请注意,这可能不足以让代码正常工作,这取决于query.getResultList()返回的实际对象
。它可能是不可修改的,在这种情况下,它将抛出一个不支持的操作异常
字符串不是一个对象数组。您实际要完成什么,以及如何将字符串转换为对象[]工作?我在列表结果
和日期对象
中重复了一个月,我应该从日期对象
中删除重复的元素,我该怎么做?
List<String> dateObj = new ArrayList<String>();
to
List<Character[]> dateObj = new ArrayList<>();
and then to add elements to dateObj, use
dateObj.add(d.toCharArray());
public void nbreRep(ActionEvent e){
List<Object[]> results;
List<Object[]>dateObj=new ArrayList<Object[]>() ;
Date date_de;
Date date_a;
Calendar beginCalendar = Calendar.getInstance();
Calendar finishCalendar = Calendar.getInstance();
beginCalendar.setTime(date_de);
finishCalendar.setTime(date_a);
while (beginCalendar.before(finishCalendar)) {
Date datediff = beginCalendar.getTime();
beginCalendar.add(Calendar.MONTH, 1);
fC = Calendar.getInstance();
Calendar fCa = Calendar.getInstance();
fC.setTime(datediff);
fCa.setTime(datediff);
int year = fCa.get(Calendar.YEAR);
String d=fC.getDisplayName(fC.MONTH, fC.LONG, Locale.FRANCE )+" "+year;
Object[] obj = new Object[2];
obj[0] = d;
obj[1] = 1;
dateObj.add(obj);
}
Query query=entityManager.createQuery("select r.dateheurerep,count(r) as nbrr "+" from Reparation r where r.dateheurerep >= :date_de and r.dateheurerep <= :date_a GROUP BY YEAR(r.dateheurerep),MONTH(r.dateheurerep)");
query.setParameter("date_de", date_de);
query.setParameter("date_a", date_a);
results = query.getResultList( );
results.addAll(dateObj);
}