![](/img/trans.png)
[英]JAVA: How to convert String ArrayList to Integer Arraylist?
[英]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.