Re: How to compute the number of occurance of each element in an array list?
 
"John" <rds1226@sh163.net> writes:
How can I have the result as:
(a,b): 2
(b,c), 2
(c,d,e):3
(a,d,e):1
  And, adding to my previous two questions:
  Which rule determines the sorting order for tuples
  of the same length?
~~
  The following program is using my GPLd library ?ram.jar?
  for the tuple type:
class NumericMapUtils
{ public static <D> void addTo
  ( final java.util.Map<D,java.lang.Integer> map, final D d, final int i )
  { map.put( d, i +( map.containsKey( d )? map.get( d ): 0 )); }}
public class Main
{ static de.dclj.ram.type.tuple.ComparableTuple
  <de.dclj.ram.type.tuple.DefaultComparableTuple>
  tuple( java.lang.Comparable ... args ) { return new
    de.dclj.ram.type.tuple.DefaultComparableTuple( args ); }
  public static void main( final java.lang.String[] args )
  { final java.util.Map
    <de.dclj.ram.type.tuple.ComparableTuple,java.lang.Integer> map =
    new java.util.TreeMap
    <de.dclj.ram.type.tuple.ComparableTuple,java.lang.Integer>();
    NumericMapUtils.addTo( map, tuple( 'a', 'b' ), 1 );
    NumericMapUtils.addTo( map, tuple( 'b', 'c' ), 1 );
    NumericMapUtils.addTo( map, tuple( 'a', 'b' ), 1 );
    NumericMapUtils.addTo( map, tuple( 'b', 'c' ), 1 );
    NumericMapUtils.addTo( map, tuple( 'c', 'd', 'e' ), 1 );
    NumericMapUtils.addTo( map, tuple( 'a', 'd', 'e' ), 1 );
    NumericMapUtils.addTo( map, tuple( 'c', 'd', 'e' ), 1 );
    NumericMapUtils.addTo( map, tuple( 'c', 'd', 'e' ), 1 );
    for( final de.dclj.ram.type.tuple.ComparableTuple d : map.keySet() )
    java.lang.System.out.println( d.toString() + map.get( d )); }}
  The output is
( a; b )2
( a; d; e )1
( b; c )2
( c; d; e )3
~~
  Here is a program in Java SE not using my library, and
  a somewhat more specialized ?NumericMap? class.
  It also uses another sorting method for the output.
class NumericMap
{ final java.util.Map
  <java.lang.String,java.lang.Integer> map =
  new java.util.TreeMap
  <java.lang.String,java.lang.Integer>();
  public void increment
  ( final char ... a  )
  { final java.lang.String s = a.length + java.util.Arrays.toString(a);
    map.put( s, 1 +( map.containsKey( s )? map.get( s ): 0 )); }
  public void print()
  { for( final java.lang.String d : map.keySet() )
    java.lang.System.out.println( d.toString() + map.get( d )); }}
public class Main
{
  public static void main( final java.lang.String[] args )
  { NumericMap numericMap = new NumericMap();
    numericMap.increment( 'a', 'b' );
    numericMap.increment( 'b', 'c' );
    numericMap.increment( 'a', 'b' );
    numericMap.increment( 'b', 'c' );
    numericMap.increment( 'c', 'd', 'e' );
    numericMap.increment( 'a', 'd', 'e' );
    numericMap.increment( 'c', 'd', 'e' );
    numericMap.increment( 'c', 'd', 'e' );
    numericMap.print(); }}
  The output is:
2[a, b]2
2[b, c]2
3[a, d, e]1
3[c, d, e]3