检查类列表中的重复项并在android中更新类中的值

我有一个包含 NameFoo 和 NumberOfFoo 的类 foo


我有一个数组列表,它是一个列表,称之为 fooList


我想检查 fooList 是否有两个相同的 NameFoo,如果它确实将 NumberOfFoo(0) 添加到 numberOfFoo(1) 并删除 NumberOfFoo(0)。


所以总的来说,我想要检查 NameFoo 中的重复项,如果有添加他们的数字,保持不同的 nameFoo 更新 NumberFoo 但删除所有其余的。


我尝试了几件事,例如


int mSize = mFoo.size();

    if(mSize>1) {

        for (int i = 0; i < mSize; i++) {

            int counter = 0;

                for (int j = 1; j < mSize; j++) {

                    if 

  (foo.get(i).getName().equals(foo.get(j).getName())) {

                        counter++;


                        foo.get(i).setNumber(String.valueOf(counter));

                    }

                }


        }

这将返回正确添加的数字,但不会删除已添加的数字,现在假设我尝试在循环中执行 foo.remove(j),循环中的 foo.getSize 或 mSize 将减少并且它会抛出一个 IndexOutOfBoundsException。


解决这些问题很有趣,但这次我很想念它。


慕运维8079593
浏览 115回答 1
1回答

慕尼黑5688855

通过使用下面的 java-7 是您的问题的一个示例,将 List 转换为具有唯一键和重复值的 Map,它们求和fooNumber并转换为ListFoo.javaclass Foo{private String nameFoo;private String numberOfFoo;public Foo() {}public Foo(String nameFoo, String numberOfFoo) {&nbsp; &nbsp; this.nameFoo=nameFoo;&nbsp; &nbsp; this.numberOfFoo=numberOfFoo;}public String getNameFoo() {&nbsp; &nbsp; return nameFoo;}public void setNameFoo(String nameFoo) {&nbsp; &nbsp; this.nameFoo = nameFoo;}public String getNumberOfFoo() {&nbsp; &nbsp; return numberOfFoo;}public void setNumberOfFoo(String numberOfFoo) {&nbsp; &nbsp; this.numberOfFoo = numberOfFoo;}@Overridepublic String toString() {&nbsp; &nbsp; return "Foo [nameFoo=" + nameFoo + ", numberOfFoo=" + numberOfFoo + "]";&nbsp; &nbsp;}}主.javapublic class MainClass {public static void main(String[] args) {Foo f1 = new Foo();f1.setNameFoo("tony");f1.setNumberOfFoo(100);Foo f2 = new Foo();f2.setNameFoo("tony");f2.setNumberOfFoo(200);Foo f3 = new Foo();f3.setNameFoo("cap");f3.setNumberOfFoo(500);List<Foo> l = Arrays.asList(f1,f2,f3);Map<String,List<Foo>> m = new HashMap<>();List<Foo> result = new ArrayList<>();for(Foo f:l) {&nbsp; &nbsp; if(m.get(f.getNameFoo())==null) {&nbsp; &nbsp; &nbsp; &nbsp; List<Foo> templist = new ArrayList<>();&nbsp; &nbsp; &nbsp; &nbsp; templist.add(f);&nbsp; &nbsp; &nbsp; &nbsp; m.put(f.getNameFoo(), templist);&nbsp; &nbsp; }else {&nbsp; &nbsp; &nbsp; &nbsp; List<Foo> list =m.get(f.getNameFoo());&nbsp; &nbsp; &nbsp; &nbsp; list.add(f);&nbsp; &nbsp; &nbsp; &nbsp; m.put(f.getNameFoo(), list);&nbsp; &nbsp; }}for(String s : m.keySet()) {&nbsp; &nbsp; Foo fin = new Foo();&nbsp; &nbsp; Integer fooNumber =0;&nbsp; &nbsp; for(Foo foo : m.get(s)) {&nbsp; &nbsp; &nbsp; &nbsp; fooNumber = fooNumber+Integer.valueOf(foo.getNumberOfFoo());&nbsp; &nbsp; &nbsp; &nbsp; fin.setNameFoo(foo.getNameFoo());&nbsp; &nbsp; &nbsp; &nbsp; fin.setNumberOfFoo(fooNumber.toString());&nbsp; &nbsp; }&nbsp; &nbsp; result.add(fin);}System.out.println(result); //[Foo [nameFoo=tony, numberOfFoo=300], Foo [nameFoo=cap, numberOfFoo=500]]&nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java