Java表記例equals()、hashCode()、compreTo()、clone()、SteringBuider()、list削除要素など

5938 ワード

equals()
equals()パラメータを実現するにはObjectでなければならず、外周類ではなくequals()をカバーする場合も、対応するhashCode()をカバーし、equals()と一致しています。またStringのデフォルト値はnullです。
public class Person {
	private String name;
	private int birthYear;
	byte[] raw;
	
	@Override
	public boolean equals(Object o){
		if(this == o){
			return true;
		}
		if(!(o instanceof Person)){
			return false;
		}
		Person other = (Person)o;
		return StringUtils.equals(name, other.name)
				&& birthYear == other.birthYear
				&& Arrays.equals(raw, other.raw);
	}
	public static void main(String args[]){
		Person p = new Person();
		Person p2 = new Person();
		System.out.println(p.equals(p2));
	}
}
hashCode.
hashCodeの一番簡単な合法的な実現は簡単にreturn 0です。この実装は正しいが,HashMapのようなデータ構造の動作が遅くなる。
注意aまたはbの値がないとjava.lang.Null PointerExceptionが発生します。
public class Person {
	private String a;
	private Object b;
	private byte c;
	int [] d;
	
	@Override
	public int hashCode(){
		return a.hashCode() + b.hashCode() + c + Arrays.hashCode(d);
	}
	public static void main(String[] args) {
		Person p = new Person();
		Person p1 = new Person();
		HashMap map = Maps.newHashMap();
		map.put(p,"hi");
		map.put(p1,"hi2");
		System.out.println(map);
		System.out.println(map.get(p));
		System.out.println(map.get(p1));
//		System.out.println(p.hashCode());
	}
}
CompreTo()
2つを与えます
public class Person implements Comparable<Person>{
	private String firstName;
	private String lastName;
	private int birthdate;
	
	@Override
	public int compareTo(Person other){
		int comparison = firstName.compareTo(other.firstName);
		if(comparison == 0){
			comparison = lastName.compareTo(other.lastName);
		}
		if(comparison == 0){
			comparison = birthdate - other.birthdate;
		}
		return comparison;
	}
}
または
public class Interval implements Comparable
{
    private int start;
    private int end;
 @Override
    public boolean equals(Object o) {
        if (!(o instanceof Intervalable)) {
            return false;
        }
        Intervalable other = (Intervalable)o;
        return this.start == other.getStart() &&
               this.end == other.getEnd();
    }


    @Override
    public int hashCode() {
        return this.start % 100 + this.end % 100;
    }


    @Override
    public int compareTo(Object o) {
        if (!(o instanceof Intervalable)) {
            return -1;
        }
        Intervalable other = (Intervalable)o;
        int comparison = this.start - other.getStart();
        return comparison != 0 ? comparison : this.end - other.getEnd();
    }
}
clone()
public class Values implements Cloneable {
	private String abc;
	private  double foo;
	private int[] bars;
	private Date hired;
	
	@Override
	public Object clone() throws CloneNotSupportedException{
		Values result = (Values)super.clone();
		result.bars = result.bars.clone();
		result.hired = (Date) result.hired.clone();
		return result;
	}
}
StringBuiderリンク文字列
	public static String join(List<String> strs, String separator){
		StringBuilder sb = new StringBuilder();
		boolean first = true;
		for(String s : strs){
			if(first)first = false;
			else sb.append(separator);
			sb.append(s);
		}
		return sb.toString();
	}
	public static String join1(List<String> strs, String separator){
		StringBuilder sb = new StringBuilder();
		int len = strs.size();
		for(int i = 0; i < len - 1; i++){
			sb.append(strs.get(i));
			sb.append(separator);
		}
		sb.append(strs.get(len - 1));
		return sb.toString();
	}
	public static void main(String[] args) {
		List<String> strs = Lists.newArrayList("a" , "b" , "c" , "d");
		String s = join1(strs, ",");
		System.out.println(s);
	}
Randomはランダム整数を得る。
	public static final Random rand = new Random();
	public static int diceRoll(){
		return rand.nextInt(100) + 1;
	}
	public static void main(String[] args) {
		int n = 5000;
		HashMap<Integer, Integer> map = Maps.newHashMap();
		while(n-- > 0){
			int r = diceRoll();
			if(map.containsKey(r)){
				map.put(r, map.get(r) + 1);
				continue;
			}
			map.put(r, 1);
		}
		System.out.println(map.toString().replace(", ", "
")); }
List削除要素
	public static void main(String args[]){
		Student s = new Student("a",1);
		Student s2 = new Student("b",2);
		Student s3 = new Student("c",3);
		Student s4 = new Student("d",3);
		Student s5 = new Student("e",3);
		List<Student> list = Lists.newArrayList(s,s2,s3,s4,s5);
		test5(list);

	}
	/**
	 *    
	 *   java.util.ConcurrentModificationException
	 */
	public static void test1(List<Student> list){
		for(Student st: list){
			if(st.getAge() == 3){
				list.remove(st);
			}
		}
	}
	/**
	 *   
	 */
	public static void test2(List<Student> list){
		for(int i = 0; i< list.size(); i++){
			if(list.get(i).getAge() == 3){
				list.remove(i);
				i--;
			}
		}
	}
	
	/**
	 *   
	 */
	public static void test3(List<Student> list){
		Iterator<Student> iterator = list.iterator();
		while(iterator.hasNext()){
			Student st = iterator.next();
			if(st.getAge() == 3){
				iterator.remove();
			}
		}
	}
	/**
	 *   
	 */
	public static void test4(List<Student> list){
		List<Student> delteList = Lists.newArrayList();
		for(Student st: list){
			if(st.getAge() == 3){
				delteList.add(st);
			}
		}
		list.removeAll(delteList);
	}
	
	/**
	 *   
	 */
	public static void test5(List<Student> list){

		for(Iterator<Student> iterator = list.iterator();iterator.hasNext();){
			Student st = iterator.next();
			if(st.getAge() == 3){
				iterator.remove();
			}
		}
	}