簡體   English   中英

如何計算ArrayList中的重復項 <Integer> 用Java並將它們作為字符串返回

[英]How to count duplicates in ArrayList<Integer> in Java and return them as string

如何計算ArrayList中的重復項並將其作為字符串返回?

例如,我有ArrayList [1,3,4,4,5,6,3,4,6],我想擁有一種方法,該方法將對Array項的出現進行計數,並在輸出中出現多於一次時顯示它們格式如下:

3-2; 4-3; 6-2;

我已經嘗試過類似的東西

`

import java.util.ArrayList;
import java.util.Random;
import java.util.HashSet;
import java.util.Set;
import java.util.Collections;

public class GeneratorKostek {
    public int ileKostek;
    Random rand = new Random();
    String wynik;
    private ArrayList<Integer> rzuty;
    private ArrayList<String> dublety;
    private int rzut = 0;
    private int ileScian;
    private int suma;

    public GeneratorKostek() {
        rzuty = new ArrayList<Integer>();
    }

    public GeneratorKostek(int IleKostek, int IleScian) {
        ileKostek = IleKostek;
        ileScian = IleScian;
        rzuty = new ArrayList<Integer>();
    }

    public void Rzucaj(int IleKostek, int IleScian) {

        ileKostek = IleKostek;
        ileScian = IleScian;

        for (int i = 0; i < ileKostek; i++) {
            rzut = rand.nextInt(ileScian) + 1;
            rzuty.add(rzut);
        }

    }

    public String PrezentujRzuty() {
        wynik = "";

        for (int i : rzuty) {
            wynik = wynik + i;
        }

        return wynik;
    }



    public void CzyscRzuty() {
        rzuty.clear();
    }



    public int SumaWartosciRzutow() {
        suma = 0;
        for (int i : rzuty) {
            suma += i;
        }

        return suma;
    }

    public String PrezentacjaDubletow() {


        Set<Integer> noDupes = new HashSet<Integer>();
        noDupes.addAll(rzuty); // Remove duplicates

        for (Integer i : noDupes) {
            int wystapienia = Collections.frequency(rzuty, i);
            if (wystapienia > 1) {
                dublety.add(i + " - " + wystapienia + ";" );
            }
        }

        for (int i =0 ; i <  dublety.size(); i++) {
            wynik = wynik + dublety.get(i);
        }


        return wynik;
    }
}

`

我只是從編程開始我的冒險...

我在其他班上叫它

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Random;

public class MainActivity extends ActionBarActivity {


    GeneratorKostek Kostki = new GeneratorKostek();
    ArrayList<Integer> wyniki = new ArrayList<Integer>();
    String wynik;
    Button btnk6, btn2k6, btn3k6, btn4k6, btn5k6, btn6k6;
    TextView tvWynik;
    EditText etInfo;
    Random rand = new Random();
    int kostka1, kostka2, kostka3, kostka4, kostka5, kostka6;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        btnk6 = (Button) findViewById(R.id.btnk6);
        btn2k6 = (Button) findViewById(R.id.btn2k6);
        btn3k6 = (Button) findViewById(R.id.btn3k6);
        btn4k6 = (Button) findViewById(R.id.btn4k6);
        btn5k6 = (Button) findViewById(R.id.btn5k6);
        btn6k6 = (Button) findViewById(R.id.btn6k6);

        tvWynik = (TextView) findViewById(R.id.tvWynik);
        etInfo = (EditText) findViewById(R.id.etInfo);


        btnk6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Kostki.CzyscRzuty();
                Kostki.Rzucaj(1, 6);
                tvWynik.setText(Kostki.PrezentujRzuty());

            }
        });


        btn2k6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Kostki.CzyscRzuty();
                Kostki.Rzucaj(2, 6);
                tvWynik.setText(Kostki.PrezentujRzuty());

            }
        });

        btn3k6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Kostki.CzyscRzuty();
                Kostki.Rzucaj(3, 6);
                tvWynik.setText(Kostki.PrezentujRzuty());

            }
        });

        btn4k6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Kostki.CzyscRzuty();
                Kostki.Rzucaj(4, 6);
                tvWynik.setText(Kostki.PrezentujRzuty());

            }
        });

        btn5k6.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Kostki.CzyscRzuty();
                Kostki.Rzucaj(5, 6);
                tvWynik.setText(Kostki.PrezentujRzuty());

            }
        });

        btn6k6.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Kostki.CzyscRzuty();
                Kostki.Rzucaj(6, 6);
                tvWynik.setText(Kostki.PrezentujRzuty());
                etInfo.setText(Kostki.PrezentacjaDubletow());

            }
        });


//        if (savedInstanceState == null) {
//            getSupportFragmentManager().beginTransaction()
//                    .add(R.id.container, new PlaceholderFragment())
//                    .commit();
//        }
    }




    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        switch (item.getItemId()) {
            case R.id.action_settings:
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            return rootView;
        }
    }

}`

對列表進行排序,然后很容易就可以對項目進行計數。

ArrayList中每個唯一項的keys創建一個Map對象。

遍歷您的List ,查詢Map以查看是否有該項目的條目。 如果存在,則增加存儲的值,否則用1初始化。

編輯*:這是一個示例

package com.count.list.items;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ListItemCounter
{
    public void start()
    {
        List<Integer> list = getList(1, 1, 5, 3, 7, 3, 11, 2, 3, 1);

        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        for (Integer i : list)
        {
            Integer retrievedValue = map.get(i);
            if (null == retrievedValue)
            {
                map.put(i, 1);
            }
            else
            {
                map.put(i, retrievedValue + 1);
            }
        }

        System.out.println("list: " + list);
        printCount(map);
    }

    private List<Integer> getList(int... numbers)
    {
        List<Integer> list = new ArrayList<Integer>();
        for (int i : numbers)
        {
            list.add(i);
        }
        return list;
    }

    private void printCount(Map<Integer, Integer> map)
    {
        for (Integer key : map.keySet())
        {
            System.out.println("number: " + key + ", count: " + map.get(key));
        }
    }
}

嘗試以下代碼:public static void main(String [] args){

    String input = "I am am akash pal pal pal";
    System.out.println("Before removing duplicate: "+input);
    String[] arr = input.split(" ");
    int count=0;
    System.out.println(arr.length);
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] != null) {
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[i].equalsIgnoreCase(arr[j])) {
                    //System.out.println("Duplicates are \n"+arr[i]);
                    arr[j] = null;count++;
                }
            }
        }
    }
    System.out.println("After");
    for (int k = 0; k < arr.length; k++) {
        if (arr[k] != null)
            System.out.print(arr[k] + " ");
    }
    System.out.println("");
    System.out.println("Duplicates \t"+count);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM