Java 不使用HashSet删除ArrayList中的重复元素
我的逻辑混乱了。我只是想找到一种方法,在不使用哈希集的情况下删除ArrayList中的重复项Java 不使用HashSet删除ArrayList中的重复元素,java,algorithm,arraylist,Java,Algorithm,Arraylist,我的逻辑混乱了。我只是想找到一种方法,在不使用哈希集的情况下删除ArrayList中的重复项 public static void main(String[] args) { ArrayList<String> wordDulicate = new ArrayList<String>(); wordDulicate.add("Tom"); wordDulicate.add("Jones"); wordDulicate.add("Sam");
public static void main(String[] args) {
ArrayList<String> wordDulicate = new ArrayList<String>();
wordDulicate.add("Tom");
wordDulicate.add("Jones");
wordDulicate.add("Sam");
wordDulicate.add("Jamie");
wordDulicate.add("Robie");
wordDulicate.add("Helen");
wordDulicate.add("Tom");
wordDulicate.add("Troy");
wordDulicate.add("Mika");
wordDulicate.add("Tom");
for (String dupWord : wordDulicate) {
if (wordDulicate.equals(dupWord))
System.out.println(wordDulicate.get(dupWord));
}
}
publicstaticvoidmain(字符串[]args){
ArrayList wordDulicate=新的ArrayList();
添加(“Tom”);
文字副本。添加(“琼斯”);
文字副本。添加(“Sam”);
添加(“Jamie”);
添加(“Robie”);
添加(“海伦”);
添加(“Tom”);
文字副本。添加(“特洛伊”);
文字副本。添加(“Mika”);
添加(“Tom”);
for(字符串重复字:wordDulicate){
if(单字等于(单字))
System.out.println(wordDulicate.get(dupWord));
}
}
您应该对列表进行排序并删除与上一个列表相同的元素。您可以创建另一个列表,并向其中添加项目,跳过重复项:-
ArrayList<String> wordDulicate = new ArrayList<String>();
ArrayList<String> tempList= new ArrayList<String>();
wordDulicate.add("Tom");
wordDulicate.add("Jones");
wordDulicate.add("Sam");
for (String dupWord : wordDulicate) {
if (!tempList.contains(dupWord)) {
tempList.add(dupWord);
}
}
ArrayList wordDulicate=new ArrayList();
ArrayList tempList=新的ArrayList();
添加(“Tom”);
文字副本。添加(“琼斯”);
文字副本。添加(“Sam”);
for(字符串重复字:wordDulicate){
如果(!templast.contains(dupWord)){
圣殿骑士。添加(dupWord);
}
}
此方法要求有另一个列表:
ArrayList<String> wordDulicate = new ArrayList<String>();
wordDulicate.add("Tom");
wordDulicate.add("Jones");
wordDulicate.add("Sam");
wordDulicate.add("Jamie");
wordDulicate.add("Robie");
wordDulicate.add("Helen");
wordDulicate.add("Tom");
wordDulicate.add("Troy");
wordDulicate.add("Mika");
wordDulicate.add("Tom");
ArrayList<String> nonDupList = new ArrayList<String>();
Iterator<String> dupIter = wordDulicate.iterator();
while(dupIter.hasNext())
{
String dupWord = dupIter.next();
if(nonDupList.contains(dupWord))
{
dupIter.remove();
}else
{
nonDupList.add(dupWord);
}
}
System.out.println(nonDupList);
l1是原始列表,l2是没有重复项的列表(请确保您的类根据您希望代表相等的内容使用equals方法)对于聚会来说似乎有点晚,但使用单个arraylist 这是没有哈希集的代码
strings = new ArrayList<>();
strings.add("a1");
strings.add("a2");
strings.add("ss");
strings.add("asd");
strings.add("asd");
strings.add("a1");
strings.add("ss");
strings.add("ss");
System.out.println(Collections.frequency(strings, "ss"));
for(int i = 0; i< strings.size();i++){
int frequency = Collections.frequency(strings, strings.get(i));
if(frequency>1){
String string = strings.get(i);
for(int j = 1 ; j < frequency ; j++)
strings.remove(string);
}
}
System.out.println(Collections.frequency(strings, "ss"));
System.out.println(strings);
strings=newarraylist();
字符串。添加(“a1”);
字符串。添加(“a2”);
字符串。添加(“ss”);
字符串。添加(“asd”);
字符串。添加(“asd”);
字符串。添加(“a1”);
字符串。添加(“ss”);
字符串。添加(“ss”);
System.out.println(Collections.frequency(字符串,“ss”));
对于(int i=0;i1){
String=strings.get(i);
对于(int j=1;j
导入java.util.ArrayList;
导入java.util.LinkedList;
导入java.util.List;
公共类ArrayListDuplicateRemove{
公共静态void main(字符串[]args){
List lst=newlinkedlist();
第1条添加(“ABC”);
第1条添加(“ABC”);
第1条添加(“ABCD”);
第1条添加(“ABCD”);
第1条添加(“ABCE”);
系统输出打印项次(“副本列表”+lst);
对象[]st=lst.toArray();
用于(对象s:st){
如果(第一个索引of(s)!=第一个最后索引of(s)){
第一次移除(第一次移除);
}
}
System.out.println(“不同列表”+lst);
}
}
包数组列表;
导入java.util.ArrayList;
导入java.util.Iterator;
班级学生{
字符串名;
字符串dob;
公立学生(字符串名称、字符串dob){
超级();
this.name=名称;
this.dob=dob;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getDob(){
返回dob;
}
公共void setDob(字符串dob){
this.dob=dob;
}
公共字符串toString(){
返回名称+“\t”+dob;
}
}
公共类移除副本{
公共静态void main(字符串[]args){
ArrayList=新建ArrayList();
增加(新学生(“prakash”、“89”);
增加(新学生(“prakash”、“89”);
增加(新学生(“saurabh”,“79”));
增加(新学生(“saurabh”,“79”));
Iterator it=list.Iterator();
while(it.hasNext()){
System.out.println(it.next());
}
int size=list.size();
对于(int i=0;iArrayList al=new ArrayList();
扫描仪sc=新的扫描仪(System.in);
for(int i=0;true;i++){
System.out.println(“输入元素:”);
字符串s1=sc.nextLine();
如果(s1等于(“退出”)){
打破
}
int x1=整数.parseInt(s1);
al.添加(x1);
for(int j=0;j当您可以创建一个新列表并向其中添加项目时..跳过重复项..只是出于好奇或者老师禁止使用HashSet
?:)for(int dupWord:wordDulicate)的{
编译?dupWord
应该是一个字符串
而不是int
不,我只是禁止了简单的方法。想学习艰难的方法:)所以,我可以更爱HashSet。为什么你要从原始列表中删除?我认为这是要求,如果不是,我们可以做!(不是)检查。我是迭代器新手。我可以问一下为什么使用迭代器吗?迭代器允许您循环遍历集合。那么,这是循环遍历集合的最佳方式吗?您应该解释代码在做什么,以及它如何回答OP的问题。在这里,我们可以使用scanner类ob从控制台向java类逐个添加整数元素然后我们可以检查元素排序
ArrayList l1 = new ArrayList();
ArrayList l2 = new ArrayList();
Iterator iterator = l1.iterator();
while (iterator.hasNext())
{
YourClass o = (YourClass) iterador.next();
if(!l2.contains(o)) l2.add(o);
}
strings = new ArrayList<>();
strings.add("a1");
strings.add("a2");
strings.add("ss");
strings.add("asd");
strings.add("asd");
strings.add("a1");
strings.add("ss");
strings.add("ss");
System.out.println(Collections.frequency(strings, "ss"));
for(int i = 0; i< strings.size();i++){
int frequency = Collections.frequency(strings, strings.get(i));
if(frequency>1){
String string = strings.get(i);
for(int j = 1 ; j < frequency ; j++)
strings.remove(string);
}
}
System.out.println(Collections.frequency(strings, "ss"));
System.out.println(strings);
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ArrayListDuplicateRemove {
public static void main(String[] args) {
List<String> lst = new LinkedList<String>();
lst.add("ABC");
lst.add("ABC");
lst.add("ABCD");
lst.add("ABCD");
lst.add("ABCE");
System.out.println("Duplicates List "+lst);
Object[] st = lst.toArray();
for (Object s : st) {
if (lst.indexOf(s) != lst.lastIndexOf(s)) {
lst.remove(lst.lastIndexOf(s));
}
}
System.out.println("Distinct List "+lst);
}
}
package arraylist;
import java.util.ArrayList;
import java.util.Iterator;
class Student{
String name;
String dob;
public Student(String name, String dob) {
super();
this.name = name;
this.dob = dob;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDob() {
return dob;
}
public void setDob(String dob) {
this.dob = dob;
}
public String toString() {
return name+"\t"+dob;
}
}
public class RemoveDuplicate {
public static void main(String[] args) {
ArrayList<Student> list=new ArrayList<Student>();
list.add(new Student("prakash", "89"));
list.add(new Student("prakash", "89"));
list.add(new Student("saurabh", "79"));
list.add(new Student("saurabh", "79"));
Iterator<Student> it=list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
int size=list.size();
for(int i=0;i<size-1;i++){
for(int j=i+1;j<size-1;j++){
if(list.get(i).getName().equals(list.get(j).getName())){
list.remove(j);
}
}
}
System.out.println(list);
}
}
ArrayList<Integer> al = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);
for(int i=0;true;i++){
System.out.println("Enter your Element:");
String s1= sc.nextLine();
if(s1.equals("Exit")){
break;
}
int x1= Integer.parseInt(s1);
al.add(x1);
for(int j=0;j<al.size();j++){
for(int k=j+1;k<al.size();k++){
int temp;
if(al.get(j).intValue()>al.get(k).intValue()){
temp =al.get(j).intValue();
al.set(j, al.get(k).intValue());
al.set(k, temp);
}//if
}//for
}//for
}//for
System.out.println(al);