我试图向ArrayList对象添加构造函数有3个参数(int,int,hashset)的对象。当我添加一个新对象时,哈希集中的值会发生某种变化,所以我添加了错误的值。例如,我创建3个对象,添加这3组整数:
142082 74016 122517 57432 97112
142082 150224 112373 129671 57432 97112 138427 115659 102283 147774
142082 31491 129671 855 57432 73545 123160 124682 147774 61966 58590
但object会收到这些:
70213 131022 118104 137949 4003 13798 23598 129525
70213 131022 118104 137949 4003 13798 23598 129525
70213 131022 118104 137949 4003 13798 23598 129525
我不明白为什么集合会改变其值。这是函数代码:
//Array of ParagData objects
public static ArrayList<ParagData> getAllParagsDatas(String indexed_data_tab) throws SQLException{
ArrayList<IndexedItem> allIndexedItems = new ArrayList<>();
ArrayList<ParagData> allParags = new ArrayList<>();
HashSet<Integer> wordsId = new HashSet<>();
//Array of all indexed words
allIndexedItems = GuiFindFrags.myConnection.getAllIndexedItems(indexed_data_tab);
int curCycledParag = 1; //current paragraph num
int curCycledTextId = 1; //current text id
for(int i = 0; i < allIndexedItems.size(); i++){
if((allIndexedItems.get(i).textId == curCycledTextId) && allIndexedItems.get(i).paragNum == curCycledParag){
if(allIndexedItems.get(i).wordId != 0) wordsId.add(allIndexedItems.get(i).wordId);
}
else {
allParags.add(new ParagData(allIndexedItems.get(i).textId, allIndexedItems.get(i).paragNum, wordsId));
wordsId.clear();
curCycledParag = allIndexedItems.get(i).paragNum;
curCycledTextId = allIndexedItems.get(i).textId;
}
}
return allParags;
}
在这段代码中我:
allIndexedItems = GuiFindFrags.myConnection.getAllIndexedItems(indexed_data_tab);
>
获取对象的ArrayListallIndexedItems,描述文本中的单词(文本在mysql表中)。此对象具有以下参数:
此对象的构造函数中还有其他参数,但这里没有使用它们。这个数组列表描述了所有文本中的所有单词。
int curCycledParag = 1; //current paragraph num
int curCycledTextId = 1; //current text id
为当前文本和当前段落创建变量。它们将在周期中更改。
同样在开始的时候,我创建了< code>HashSet
SO:当段落的所有单词都添加到 HashSet 时,我必须创建另一个对象,描述段落 - 对象 ParagData(它具有:
一开始我还创建了一个ArrayList
else {
allParags.add(new ParagData(allIndexedItems.get(i).textId, allIndexedItems.get(i).paragNum, wordsId));
wordsId.clear();
curCycledParag = allIndexedItems.get(i).paragNum;
curCycledTextId = allIndexedItems.get(i).textId;
}
return allParags;
当我向数组列表添加新的ParagData对象时,它的值会改变——所以不正确的值会被添加到所有parag的数组列表中
为每个段落创建一个新的Hashset对象。Hashset在创建后不是不可变的。你面对的是同一个物体。
问题内容: 如果我有一个ArrayList,并向其中添加了一个对象,后来又修改了该对象,此更改是否会反映在ArrayList中?还是将对象添加到ArrayList时,Java创建了一个副本并将其添加到ArrayList? 如果将对此对象的引用更改为null怎么办?这是否意味着ArrayList中的对象现在也为空? 问题答案: 这个变化会反映在ArrayList中吗? 是的,因为您在列表中添加了对该
问题内容: 我读过这个问题:更改集合中的元素会更改“等于”语义 但是,我不知道如何解决无法更改HashSet中的项并稍后将其删除的问题。 我有一些示例源代码: 其中TestClass只是一个POJO,它拥有一个变量(加上getter和setter),并实现了hashcode()和equals()。 有人要求显示equals()和hashcode()方法。这些是由eclipse自动生成的: 结果如下
所以我的目标是把一个字符串拆分成一个Word对象数组。我只想要一个对象来表示一个英语单词,这意味着在添加到数组之前应该过滤掉重复的单词。我一辈子都不知道为什么我过滤掉重复单词的标准失败了。我已经尝试了ArrayList和HashSet。我的目标是在字符串中计算该单词的实例,但我还没有实现。 我的单词分类是: 这是我当前的输出: 单词集大小:18 |单词列表大小:18 word: the | cou
我已经创建了JPanel的一个子类来显示图像。我在JFrame的构造函数中实例化这一点,并将其添加到该JFrame中。这很好用。然后我添加了一个带有ActionListener的按钮来更改该图像。我的问题是JFrame不会更新,尽管我已经尝试过重新绘制等。 JPanel的子类: JFrame基本上是这样的 为什么ActionListener中的方法不更新JFrame Hauptfenster中的i
我的任务是实现一个蛮力算法来输出一些n的整数[1,2,…, n]的所有排列。但是,我似乎在将ArrayList对象添加到HashSet时遇到了一些问题: 我发现对“nextPer的连续调用确实找到了所有排列,但是我不明白当我将排列添加到HashSet“allPer的排列”时会发生什么。我在n=3的情况下运行时得到的输出是这样的: [[3, 2, 1, 1, 2, 1, 1, 3, 1, 2], [
我有一个遵循特定模式的整数列表,它很复杂,但例如: 我想用9个副本来扩展列表,但添加一个常量值,每次线性扩展。例如,如果 那么第二个扩展将导致: 所以我想我需要一个循环,循环通过并通过