File: AtomicStringNum.java

package info (click to toggle)
bbmap 39.20%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 26,024 kB
  • sloc: java: 312,743; sh: 18,099; python: 5,247; ansic: 2,074; perl: 96; makefile: 39; xml: 38
file content (63 lines) | stat: -rwxr-xr-x 1,319 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package structures;

import java.util.concurrent.atomic.AtomicLong;

public class AtomicStringNum implements Comparable<AtomicStringNum> {

	public AtomicStringNum(String s_, long n_){
		s=s_;
		n=new AtomicLong(n_);
	}

	public long increment(){
		return n.incrementAndGet();
	}
	
	public long increment(long x){
		return n.addAndGet(x);
	}
	
	public void add(AtomicStringNum sn) {
		n.addAndGet(sn.n.get());
	}

	/* (non-Javadoc)
	 * @see java.lang.Comparable#compareTo(java.lang.Object)
	 */
	@Override
	public int compareTo(AtomicStringNum o) {
		final long a=n.get(), b=o.n.get();
		if(a<b){return -1;}
		if(a>b){return 1;}
		return s.compareTo(o.s);
	}

	@Override
	public String toString(){
		return s+"\t"+n;
	}

	@Override
	public int hashCode(){
		return ((int)(n.get()&Integer.MAX_VALUE))^(s.hashCode());
	}
	
	@Override
	public boolean equals(Object other){
		return equals((AtomicStringNum)other);
	}
	
	public boolean equals(AtomicStringNum other){
		if(other==null){return false;}
		if(n!=other.n){return false;}
		if(s==other.s){return true;}
		if(s==null || other.s==null){return false;}
		return s.equals(other.s);
	}
	
	/*--------------------------------------------------------------*/

	public final String s;
	public AtomicLong n;

}