gpt4 book ai didi

Java Arraylist.retainAll() 返回意外的空列表

转载 作者:行者123 更新时间:2023-12-02 08:44:09 29 4
gpt4 key购买 nike

我试图使用方法retainAll来比较Java中的两个整数列表,但是返回的结果不是我所期望的,我似乎没有发现这里的问题。在以下代码中,在 servlet 中:

// some data recieved via JSon
int id_questao = Integer.valueOf(String.valueOf(resp.get("id_questao")));
ArrayList<Integer> idsAlt = (ArrayList<Integer>) resp.get("alt_selecionadas");
System.out.println(idsAlt);
// some database data
ArrayList<Integer> gabarito = new Ead_AlternativasDAO().getAlternativasCorretasPorQuestao(id_questao);
System.out.println(gabarito);

// comparing lists
ArrayList<Integer> auxiliar = new ArrayList<Integer>();
auxiliar.addAll(idsAlt);
System.out.println("auxiliar");
System.out.println(auxiliar);
auxiliar.retainAll(gabarito);
System.out.println("after retainAll: ");
System.out.println(auxiliar);

我在调试中打印了以下内容:

idsAlt
[64, 65]
gabarito
[64, 65]
auxiliar
[64, 65]
after retainAll:
[]

也应该是[64,65],不是吗?我可能做错了什么?

最佳答案

我设法使用以下代码片段重现您的调试:

    public static void main(String...args) {
ArrayList<Integer> idsAlt = (ArrayList<Integer>)getAltSelecionadas();
System.out.println(idsAlt);
// some database data
List<Integer> gabarito = getGabaritoFromDao();
System.out.println(gabarito);

// comparing lists
ArrayList<Integer> auxiliar = new ArrayList<Integer>();
auxiliar.addAll(idsAlt);
System.out.println("auxiliar");
System.out.println(auxiliar);
boolean retained = auxiliar.retainAll(gabarito);
System.out.println(retained + " after retainAll: ");
System.out.println(auxiliar);
}

private static ArrayList<Integer> getGabaritoFromDao() {
return new ArrayList<>(Arrays.asList(64, 65));
}

private static ArrayList getAltSelecionadas() {
return new ArrayList(List.of(64L, 65L));
}

因此,您需要验证 resp.get("alt_selecionadas"); 返回的数据类型(为什么必须将其转换为 ArrayList?)和/或 getAlternativasCorretasPorQuestao( Ead_AlternativasDAO

中的整数 id_questao)

关于Java Arraylist.retainAll() 返回意外的空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61193795/

29 4 0