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