当前位置: 首页 > 知识库问答 >
问题:

将一个数组列表的元素复制到另一个数组列表,使用Java消除第二个数组列表中的冗余

鲜于仰岳
2023-03-14

我想创建一个代码,帮助我将元素从“allWords”ArrayList复制到“差异词”。但他在不同单词ArrayList中的时间我希望一个单词只出现一个,消除“差异词”ArrayList中的冗余。

这是我想出的代码,我没有得到任何输出。

导入java。util。ArrayList;

公共类复制元素{

 static ArrayList<String> distinctWords = new ArrayList<String> ();
 static ArrayList<String> allWords = new ArrayList<String> ();
 static int allWordsCount = 0;
 static int distinctWordsCount;
 static int tracker;


public static void main(String[] args) {


    allWords.add("you");
    allWords.add("want");
    allWords.add("to");
    allWords.add("go");
    allWords.add("to");
    allWords.add("dubai");
    allWords.add("and");
    allWords.add("you");
    allWords.add("also");
    allWords.add("want");
    allWords.add("to");
    allWords.add("go");
    allWords.add("to");
    allWords.add("seychelles");




    //printing all items in the 'allwords' arraylist
    //System.out.println("CONTENTS OF 'ALL WORDS' ARRAYLIST : ");

    distinctWords.add(0,allWords.get(0));
    distinctWordsCount = 1;

    int i = 1;
        for(int j = 1; j <= distinctWords.size(); j++){
            if(i < allWords.size()){
                tracker = 0;
                if (tracker == j){
                    distinctWords.add(j, allWords.get(i));
                    System.out.println("\t\t\t" + distinctWords.get(j));
                    distinctWordsCount ++;
                    i++;
                } else
                    if (tracker != j){
                        if(allWords.get(i) !=  distinctWords.get(tracker)){
                            //distinctWords.add(allWords.get(i));
                            //distinctWordsCount ++;
                            tracker++;
                        }
                    else
                        if(allWords.get(i) == distinctWords.get(tracker)){
                              i++; 
                               }
                //System.out.println("CONTENTS OF 'ALL WORDS' ARRAYLIST : ");
                //System.out.println("\t\t\t" + distinctWords.get(j));

          }
        }
        //System.out.println("\t\t\t" + distinctWords.get(j));
    }

    //System.out.println("\n\nTHE NUMBER OF ITEMS IN THE 'ALLWORDS' ARRAYLIST IS : " + allWords.size());
    //System.out.println("\n\nTHE NUMBER OF ITEMS IN THE 'DISTINCTWORDS' ARRAYLIST IS : " + allWords.size());
    System.out.println("\n\nITEMS IN THE 'DISTINCTWORDS' ARRAYLIST ARE : " + distinctWords.size());

}

}

共有3个答案

郜彦
2023-03-14

我想这可以给你一套所有不同的单词。

Set<String> distinctWords = new HashSet<>(allWords);

如果你确实需要一个数组,你可以简单地这样做:

ArrayList<String> distinctWordsArr = new ArrayList<>(distinctWords);
关翰
2023-03-14
//al1 and al2 are ArrayList<Object>
for(Object obj:al1){
    if(!al2.contains(obj))
        al2.add(obj);
}
万高畅
2023-03-14

以下代码如何:

for (int i = 0, size = allWords.size(); i < size; i++)
{
    String word = allWords.get(i);

    // add the word if it is not in distinctWords
    if (!distinctWords.contains(word))
    {
        distinctWords.add(word);
    }
 }

如果你不在乎单词的顺序,那么你可以按照建议使用一套。

Set<String> distinctSet = new HashSet<String>(allWords);

// if you want the set put into your other arrayList
distinctWords.addAll(distinctSet);
 类似资料:
  • 很抱歉这太模糊了,但代码太多了。 这是一个五卡梭哈游戏。基本上,我试图将对象添加到另一个数组列表中的数组列表中。 这是我创建玩家数组并将手类中的数组添加到其中的地方,至少我认为这就是正在发生的事情: 稍后,我尝试在循环交易中将牌添加到玩家阵列中的手牌阵列中。由于有五张牌,第一个循环进行了五次。第二个是玩家数组的长度(玩家总数),每次应该添加一张卡。 Deck类中有一个deal方法,由以下方法初始化

  • 问题内容: 我必须找到一种最好的方法来找出第二个arraylist中未显示的元素。假设 因此,基本上我想要找出的是 a 在 数组列表b中 不存在的元素。 那么什么是最好的解决方案呢? 问题答案: 还可以考虑使用集合而不是列表。

  • 问题内容: 我想要创建一个arraylist数组,如下所示: 但是它没有编译。我怎样才能做到这一点? 问题答案: 根据Oracle文档: “你不能创建参数化类型的数组” 相反,你可以执行以下操作: 正如汤姆·霍廷(Tom Hawting)的建议-定位线一样,最好这样做:

  • 我在数组列表(嵌套数组列表)中有一个数组列表,如下所示 现在我需要获取存在于arraylist的给定索引中的的实例并为其添加一个值。我使用了以下代码 但是它给了我一个错误 线程"main"java.lang.异常索引:0,大小:0 如何解决这个问题以及为什么会发生这种情况。 谢谢你

  • 问题内容: 写一个方法 公共静态ArrayList merge(ArrayList a,ArrayList b) 合并两个数组列表,两个数组列表中的元素交替出现。如果一个数组列表短于另一个数组列表,则请尽可能长地交替,然后附加较长数组列表中的其余元素。例如,如果a是 1 4 9 16 b是 9 7 4 9 11 然后合并返回数组列表 1 9 4 7 9 4 16 9 11 我尝试做的是编写一个带i

  • 有人请让我知道我如何才能达到预期的结果。如有任何帮助,不胜感激。 谢谢