我想提取和计算重复的数组元素,例如:
int arr []= {7,4,3,0,2,0,5,2,13,2,0,3};
输出应为
2重复3次
0重复3次
3次重复2次
我的试用版代码是用Java编写的:
public static void repeated(int x[]){
int i, j;
int counter = 0;
for(i=0 ; i<x.length ; i++ ){
boolean isRepeat = false;
for(j=i-1 ; j>=0 ; j--){
if(x[i] == x[j]){
isRepeat = true;
counter++;
}
}
if(isRepeat){
counter = counter+1;
System.out.println(x[i] + " repeated " + counter + " times");
counter = 0;
}
}
}
public static void main(String[] args) {
int arr []= {7,4,3,0,2,0,5,2,13,2,0,3};
repeated(arr);
}
但我的输出是:
0重复2次
2重复2次
2重复3次
0重复3次
3次重复2次
我根据您的帮助开发了一个新代码,但我的新代码只解决了第一个问题:
public static void repeated(int x[]){
int i, j;
for(i=0 ; i<x.length ; i++ ){
int isRepeat = 1;
for(j=i-1 ; j>=0 ; j--){
if(x[i] == x[j]){
isRepeat ++;
}
}
if(isRepeat == 2){
System.out.println(x[i] + " repeated " + "? times");
}
}
}
public static void main(String[] args) {
int arr []= {7,4,3,0,2,0,5,2,13,2,0,3};
repeated(arr);
}
然后输出:
0重复?次
2重复?次
3重复?次
仍然是我想要的计数器,没有任何列表或hashmap
答案 0 :(得分:0)
HashMap<Integer, Integer>
。arr
中的每个号码,请检查它是否在map.keySet
中。如果是,请递增该值。如果不加一个。map.keySet
中的键,如果值&gt; 1,打印键+“重复”+值+“次\ n”答案 1 :(得分:0)
在遍历中有内部循环,有一组整数来存储已经计数的一个,在检查重复检查之前是否已经存在于计数中如果忽略
public static void repeated(int x[])
{
int i, j;
int counter = 0;
Set<Integer> alreadyCounted = new HashSet<>();
for (i = 0; i < x.length; i++)
{
boolean isRepeat = false;
if (!alreadyCounted.contains(x[i]))
{
for (j = i + 1; j < x.length; j++)
{
if (x[i] == x[j])
{
isRepeat = true;
alreadyCounted.add(x[i]);
counter++;
}
}
if (isRepeat)
{
counter = counter + 1;
System.out.println(x[i] + " repeated " + counter + " times");
counter = 0;
}
}
}
}
public static void main(String[] args) {
int arr []= {7,4,3,0,2,0,5,2,13,2,0,3};
repeated(arr);
}
答案 2 :(得分:0)
int arr [] = {7,4,3,0,2,0,5,2,13,2,0,3};
public static void main( String[] args )
{
FindingFreq ob = new FindingFreq();
for( Map.Entry<Integer, Integer> entry : ob.getList() )
{
System.out.println( entry.getKey() + " repeated " + entry.getValue() + " times !" );
}
}
private List<Map.Entry<Integer, Integer>> getList()
{
Map<Integer, Integer> map = new LinkedHashMap<Integer, Integer>();
for( Integer intValue : arr )
{
if( map.get( intValue ) == null )
{
map.put( intValue, 1 );
}
else
{
map.put( intValue, map.get( intValue ) + 1 );
}
}
List<Map.Entry<Integer, Integer>> list = new LinkedList<Map.Entry<Integer, Integer>>( map.entrySet() );
Comparator<Map.Entry<Integer, Integer>> comp = new Comparator<Map.Entry<Integer, Integer>>()
{
@Override
public int compare( Entry<Integer, Integer> o1, Entry<Integer, Integer> o2 )
{
return ( o1.getValue() ).compareTo( o2.getValue() );
}
};
Comparator<Map.Entry<Integer, Integer>> cmp1 = Collections.reverseOrder( comp );
Collections.sort( list, cmp1 );
return list;
}
}