这几天经常被问有关List里重复值的问题, 今天在网上看到几个好的方法,已经自己测试过了,写的非常好,贴出来大家一起学习下:
方法一:循环元素删除 写道
// 删除ArrayList中重复元素
public static void removeDuplicate(List list) {
for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {
for ( int j = list.size() - 1 ; j > i; j -- ) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
System.out.println(list);
}
方法二:通过HashSet剔除 写道
// 删除ArrayList中重复元素
public static void removeDuplicate(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
System.out.println(list);
}
方法三: 删除ArrayList中重复元素,保持顺序 写道
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println( " remove duplicate " + list);
}
个人感觉第二种和第一种写的很好。
分享到:
相关推荐
"实际控制人重复值剔除"是这个过程中的一个具体案例,主要针对的是金融或企业数据中的特定问题。在这个场景下,"实际控制人"指的是拥有企业实质性控制权的个人或机构,他们可能通过直接或间接的方式持有公司的股份。...
递归是一种函数调用自身的方法,适用于处理具有重复子问题的问题。对于约瑟夫问题,我们可以定义一个函数,接收两个参数:当前人数n和剔除的间隔m。当n等于1时,返回1(即幸存者),否则返回解决n-1人问题的结果再...
这个程序首先读取用户输入的n, s和m值,然后创建一个大小为n的顺序表并将1到n的数字填充进去,最后调用`josephus_seq`函数按照Josephus规则进行剔除并打印结果。 当n和m较大时,手动解决Josephus问题变得极其复杂,...
7. **算法效率**:由于问题涉及大量的重复操作,因此可能需要考虑算法的时间复杂性和空间复杂性,优化数据结构和算法以提高效率。 8. **调试技巧**:编写程序后,使用调试工具检查代码逻辑,确保程序在各种输入条件...
4. **重复过程**:报数和剔除的过程一直持续,直到链表只剩下一个节点,这个节点就是最后的胜者。 在`Main.java`文件中,我们可以看到一个完整的程序,它实现了上述逻辑。程序可能包括以下几个关键部分: - `Node`...
这里的关键在于如何有效地找到并删除报数达到特定值的节点,以及如何在剔除节点后保持链表的连续性。 以下是一个简单的实现思路: 1. 创建一个链表,链表节点包含两个部分:数值(代表人的编号)和指针(指向下一个...
4. **剔除操作**:当计数器达到预设的剔除值时,从链表中删除该节点,并更新计数器,使其指向下一个节点。 5. **循环处理**:重复剔除操作,直到链表中只剩下一个节点,即“幸存者”。 6. **输出结果**:输出...
- `josephusProblem(n, k)`: 主函数,解决n人约瑟夫环问题,每次数到k时剔除一人。 在分析和理解这段源代码时,我们不仅能够掌握链表操作的基本技巧,还能了解到如何用递归或循环来处理复杂问题。此外,约瑟夫环...
总结,当需要在JavaScript中插入新列表时剔除掉全列表已有的项目,可以采用多种策略,如使用`indexOf()`/`includes()`检查、`Set`数据结构或`filter()`方法。选择哪种方法取决于具体需求,包括性能、数据规模和是否...
约瑟夫环问题的基本设定是:n个人围成一个圈,从某个人开始按顺序报数,每报到特定数值(在这个例子中是3)的人会被剔除出圈,然后从下一个人继续报数,直到只剩下最后一个人为止。我们需要找出最后剩下的那个人的...
为了提高效率,可以使用迭代的方式,例如使用栈来保存中间状态,避免重复的元素添加和移除操作。此外,还可以考虑使用位运算来优化,尤其是在元素数量较大时。 总之,全排列问题是一个典型的回溯法应用,理解并掌握...
在这个问题中,人们按照一定的规则围成一个圈,然后按照特定的顺序剔除圈中的成员,直到只剩下最后一个人,这个人被称为“幸运儿”。 描述中提到的“约瑟夫环:围成圈圈,选出一名幸运儿的游戏”,进一步确认了这个...
这个问题的基本设定是:人们围成一个圈,从某个人开始按顺序报数,每次数到特定数值的人会被剔除出圈,然后从下一个人继续报数,直到只剩下最后一个人为止。这个幸存者的位置在不同的初始条件和报数规则下会有不同的...
例如,`cgi.list`经过过滤,剔除了无效或不相关的词汇,使得扫描更加高效。同时,这些工具还可以帮助用户发现潜在的敏感信息,如密码、个人数据等,以保护网站和用户的隐私。 **四、使用方法与扩展** - **使用...
通过这个函数,我们可以解决任何规模的猴子问题,只要知道m和n的值。 在实际编程中,可能会遇到各种边界条件和效率优化问题,例如,如果n等于1,那么每次都会淘汰编号为1的猴子,直到只剩下一个。此外,当n大于m时...
- **顶点重复**:立方体实际上只有8个顶点,但在这种情况下每个顶点被重复使用了3次。 - **代码冗余**:大量重复的代码不仅增加了出错的概率,还降低了代码的可读性和维护性。 #### 三、顶点数组的优势 为了解决...
为了解决这个问题,我们首先需要创建一个表示链表节点的结构体`struct list`,包含两个字段:`name`存储猴子的编号,`next`指向下一个节点的指针。然后在`main`函数中,我们动态地分配内存来创建这些节点,并形成一...
约瑟夫环问题的基本设定是:N个人围成一个圈,从第一个人开始按顺时针方向报数,每报到M的人将被剔除,然后从下一个人继续报数,直至剩下最后一个人。我们的任务是找出最后幸存者的位置或者身份。 ### 二、逻辑设计...
禁忌搜索算法(Tabu Search)是一种启发式优化方法,它被广泛应用于解决组合优化问题,如旅行商问题(Traveling Salesman Problem, TSP)。旅行商问题是一个经典的NP完全问题,目标是找到一个访问所有城市的最短路径...
例如,当筛选到2时,所有2的倍数(即2、4、6...)都将被剔除;然后,从剩下的数中找到最小的未被筛去的数,继续执行同样的操作,直至序列中所有数都被检查过。最终得到的数列就是所谓的幸运数列。 ### 程序设计解析...