1、同等またはコンパレータ
通常の状況下では、バックグラウンドJavaでオブジェクトを使用して、比較できるのは==または!=。あなたは使用することはできません>または<された
実際の開発シナリオでは、我々はあなたがオブジェクトのサイズを比較する必要がある、という意味、複数のオブジェクトをソートする必要がありますが、
どのように達成するために?2つのインターフェースのいずれかを使用:比較可能または比較
1.1 Comparableインターフェースの使用例:自然順序付け
1.ラッパーなどの文字列と同様に、同等のインターフェースを実装し、compareTo()メソッドを書き換えて、2つのオブジェクトのサイズを比較します。
2. compareTo()メソッドのルールを書き換えます。
現在のオブジェクトが仮パラメーターオブジェクトobjよりも大きい場合、正の整数
が返され
ます。 0を返します
3.文字列やラッパーのようにcompareTo()を書き換えた後、小さなものから大きなものへとソートされます
4.カスタムクラスの場合、並べ替えが必要な場合は、カスタムクラスにComparableインターフェースを実装させ、compareTo()メソッドをオーバーライドし、compareTo()メソッドでの並べ替え方法を指定できます。
public class Goods implements Comparable {
private String name;
private double price;
//省略了 getter setter 构造器 toString方法
//重写了compareTo()方法
@Override
public int compareTo(Object o) {
if (o instanceof Goods) {
Goods goods = (Goods) o;
if (this.price > goods.price) {
return 1;
} else if (this.price < goods.price) {
return -1;
} else {
// return 0;
return -this.name.compareTo(goods.name);
}
//方法二
// return Double.compare(this.price,goods.price)
}
// return 0;
throw new RuntimeException("传入的数据类型不一致");
}
}
Goods[] arr = new Goods[5];
arr[0] = new Goods("lenovoMouse", 46);
arr[1] = new Goods("xiaomiMouse", 12);
arr[2] = new Goods("dellMouse", 35);
arr[3] = new Goods("huaweiMouse", 65);
arr[4] = new Goods("MicrosoftMouse", 35);
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
1.2、コンパレータインターフェースの使用、カスタムソート
1.背景
要素のタイプがjava.lang.Comparableインターフェースを実装せず、コードを変更するのが不便な場合、
またはjava.lang.Comparableインターフェースのソート規則が現在の操作に適していない場合は
、Comparatorオブジェクトを実装してソートすることを検討してください
。2.書き換えcompara(Object o1、Object o2)メソッドは、o1とo2のサイズを比較します。
正の整数が返される場合、それはo1がo2より大きい
ことを意味します。0を返す場合、それは等しいことを意味します。
負の整数が返されます。つまり、o1がoより小さいことを意味します。
String[] arr = new String[]{"AA", "CC", "JJ", "MM", "DD", "KK"};
Arrays.sort(arr, new Comparator<String>() {
//按照字符串从大到小的排序
@Override
public int compare(String o1, String o2) {
if ( o1 instanceof String && o2 instanceof String){
String s1 = (String) o1;
String s2 = (String) o2;
return -s1.compareTo(s2);
}
// return 0;
throw new RuntimeException("输入的数据类型不一致");
}
});
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
2.他の一般的に使用されるクラスの使用
2.1、システム
①システムは、プログラムが配置されているシステムを表し、対応するシステム属性情報とシステム操作を提供します。コンストラクターはプライベートで装飾されているため、Systemクラスは手動でオブジェクトを作成できません。外部からオブジェクトを作成できません。Systemクラスのすべてのメソッドは静的メソッドであり、クラス名にアクセスできます。
②一般的な方法
1.システムの現在のミリ秒の値を取得します(public static long currentTimeMillis())
現在のシステム時刻と1970年1月1日00:00の前のミリ秒との差を取得します。これを使用して、プログラムの実行時間をテストできます。
public static void main(String[] args) {
long start = System.currentTimeMillis();
for (int i=0; i<10000; i++) {
System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println("共耗时毫秒:" + (end-start) );
}
2.実行中のJavaプログラムを終了します(public staitc void exit(int status))
パラメータは数値で渡すことができます。通常、着信0は正常な状態として記録され、もう1つは異常な状態です。
3.ガベージコレクター(public static void gc())
メモリ内のガベージの削除を完了するために、JVMでガベージコレクタを実行するために使用されます。
4.現在のシステムプロパティを決定します(public static getProperties getProperties())
System.out.println(System.getProperties());
2、数学
①JavaのMathクラスは、一般的に使用される数学演算をカプセル化し、指数関数、対数関数、平方根、三角関数などの基本的な数学演算を提供します。Mathクラスはjava.langパッケージにあり、そのコンストラクターはプライベートであるため、Mathクラスのオブジェクトを作成することはできません。Mathクラスのすべてのメソッドはクラスメソッドであり、クラス名で直接呼び出すことができます。
②メソッド
Math.absは絶対値を
求めますMath.sin正弦関数Math.asin逆正弦関数
Math.cos余弦関数Math.acos逆余弦関数
Math.tan正接関数Math.atan逆正接関数Math.atan2逆正接関数
MathラジアンにMath.toRadians角度に.toDegreesラジアン単位の角度は、
整数最大一定数Math.ceil以上取得
Math.floorが整数最大の一定数未満得る
Math.IEEEremainder残りの
二つの数字の最大検索Math.max
数学。分2つの数の最小シーク
Math.sqrt要件は規定
オーバフロー例外の処理数のMath.pow任意の電力需要がスローさはArithmeticException
Math.expの任意の電力需要がE
Math.log10ベース10対数
数学。対数自然対数
Math.PIで記録されたpi
Math.Eで記録された定数e
Mathにも同様の定数があり、工学数学で一般的に使用される量です。
Math.rintは最も近い整数を検索します(特定の数値よりも大きい場合も小さい場合もあります)
Math.round上記と同様に、intまたはlongを返します(前の関数はdoubleを返します)
Math.randomは0、1を返します乱数
使用例:
double s = Math.sqrt(5);
double x = Math.pow(2,4)// 2の4乗を計算する
3、BigIntegerとBigDecimal
このクラスのコンテンツを表示できます:https://blog.csdn.net/qq997404392/article/details/78085783
Javaの整数型では、バイトは8ビット、短いは16ビット、intは32ビット、長いは64ビットです。これらの値の2進数は固定されているため、それらが表すことができる値のサイズには、特定の範囲制限があります。したがって、JavaはBigIntegerクラスとBigDecimalクラスを提供して、より大きな数を処理します。
Java-String、StringBuffer、StringBuilderで一般的に使用されるクラスの1つ
https://blog.csdn.net/weixin_43244120/article/details/105187804
Javaの一般的に使用されるクラス2日付時刻クラス
https://blog.csdn.net/weixin_43244120/article/details/105188644