Java表記例equals()、hashCode()、compreTo()、clone()、SteringBuider()、list削除要素など
5938 ワード
equals()
equals()パラメータを実現するにはObjectでなければならず、外周類ではなくequals()をカバーする場合も、対応するhashCode()をカバーし、equals()と一致しています。またStringのデフォルト値はnullです。
hashCodeの一番簡単な合法的な実現は簡単にreturn 0です。この実装は正しいが,HashMapのようなデータ構造の動作が遅くなる。
注意aまたはbの値がないとjava.lang.Null PointerExceptionが発生します。
2つを与えます
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();
}
}
}