我对将对象分配给具有几乎相同对象的数组列表有疑问,这些对象来自另一个列表,我想将其添加到数组列表两次,在将其添加到另一个列表之前,我需要在这些对象中设置变量值.
这是代码,
ArrayList<ClassCourse> courses = new ArrayList<ClassCourse>();
ArrayList<ClassCourse> _courses = new ArrayList<ClassCourse>();
int index = 0;
for( int i = 0; i < courses.size(); i++ )
{
ClassCourse t = courses.get(i);
if(t.getSks()==4)
{
i--;
t.setSks(2);
t.setIndex(index); // I want to set this one
index++;
}
else
{
t.setIndex(index); // I want to set this one
index++;
}
_courses.add(t);
}
问题是当我通过打印来检查列表时
for( ClassCourse t : _courses )
System.out.println( t.getIndex() + " " + t.getName() + " " +
t.getCourseCode() + " " + t.getSks() );
这就是我得到的
1 Visi 电脑 A 2 1 Visi 电脑 A 2 2 Matematika Diskrit C 3 4 Jaringan Nirkabel 和 Komputasi Bergerak A 2 4 Jaringan Nirkabel 和 Komputasi Bergerak A 2 5 Pemograman 框架 .NET A 3 6 Perancangan 和分析算法 E 3 8 终端分销系统 A 2 8 终端分销系统 A 2 9 马特马蒂卡磁盘 D 3 11 玛纳杰门普罗耶克佩兰卡特鲁纳克 A 2 11 玛纳杰门普罗耶克佩兰卡特鲁纳克 A 2
我无法让指数的价值以正确的方式增加
if(t.getSks()==4)
{
i--;
t.setSks(2);
t.setIndex(index); // I want to set this one
index++;
}
我猜你正在递减 i 以便该对象被添加两次。但请记住,它是添加到列表中的同一对象。因此,当您设置 t.setIndex(index) 时,它将更改上一次迭代的索引值。 这是因为 java 只处理引用。因此,courses.get(0) 和 course.get(1) 返回对同一对象的引用,从而产生此行为。 如果您希望索引不同,那么您可能需要克隆该对象并将其再次添加到列表中。您需要仔细考虑并决定是否需要该对象的另一个副本。
Buatlah 程序 perkalian matriks 2 维数据元素整数mengikuti spesifikasi berikut: A。 Dimensi dari tiap-tiap array diterima dari user, oleh sebab itu array harus dialokasikan secara 迪纳米克。 Ini dilakukan di fungsi main.(ukuran array 1 adalah m1 x n1; ukuran array 2 adalah m2 x n2;迪马纳 m1,m2 阿达拉巴里斯 丹 n1,n2 阿达拉科洛姆) b. 2 buah 阵列 yang dikalikan Harus 兼容,yaitu n1 == m2 (jumlah kolom 阵列 pertama Harus sama dengan jumlah baris array kedua) C。 Perkalian dilakukan di sebuah fungsi dengan 原型: int **perkalian(int **array1, int **array2); Fungsi perkalian dipangil oleh fungsi main。双重间接性 指针。 Anda dapat menyesuaikan prototipe sesuai kebutuhan。阳喷参数真菌 menerima 2 指针 ke 数组 2 维。 d. Fungsi主Mencetak阵1、阵2、dan阵yang Hasil Perkalian。 e. Tambahkan:NIM – Nama Anggota sebagai komentar pada baris awal 计划 (sebelum penyertaan pustaka) secara berurut 上升。 F。 Simpan 程序 dengan nama:perkalianArray.c.