構造器必須是私有的 工具類的特征是什么?
工具類特征:
構造器必須是私有的,工具類一般不需要初始化,可以直接使用;工具類的方法必須是被static final方法修飾,保證方法不可變;不要在工具類方法中對共享變量有修改的操作,如果一定要有,必須加鎖保證線程安全;工具類的所有方法都沒有線程安全問題;
(資料圖片僅供參考)
一、Arrays
Arrays主要提供了對數組的高效操作,包括排序、查找、填充、拷貝、相等判斷等操作;
1、sort(int[] a)
1.1、JDK1.6
1.1.1、源碼
// int類型數組排序public static void sort(int[] a) {sort1(a, 0, a.length);}private static void sort1(int x[], int off, int len) {// Insertion sort on smallest arrays if (len < 7) {for (int i = off; i < len + off; i++) for (int j = i; j > off && x[j - 1] > x[j]; j--) swap(x, j, j - 1); return; } // Choose a partition element, v int m = off + (len >> 1); // Small arrays, middle element if (len > 7) {int l = off; int n = off + len - 1; if (len > 40) {// Big arrays, pseudomedian of 9 int s = len / 8; l = med3(x, l, l + s, l + 2 * s); m = med3(x, m - s, m, m + s); n = med3(x, n - 2 * s, n - s, n); } m = med3(x, l, m, n); // Mid-size, med of 3 } int v = x[m]; // Establish Invariant: v* (v)* v* int a = off, b = a, c = off + len - 1, d = c; while (true) {while (b <= c && x[b] <= if="" while="" c="">= b && x[c] >= v) {if (x[c] == v) swap(x, c, d--); c--; } if (b > c) break; swap(x, b++, c--); } // Swap partition elements back to middle int s, n = off + len; s = Math.min(a - off, b - a); vecswap(x, off, b - s, s); s = Math.min(d - c, n - d - 1); vecswap(x, b, n - s, s); // Recursively sort non-partition-elements if ((s = b - a) > 1) sort1(x, off, s); if ((s = d - c) > 1) sort1(x, n - s, s);}/** * Swaps x[a] with x[b]. */private static void swap(int x[], int a, int b) {int t = x[a]; x[a] = x[b]; x[b] = t;}/** * Swaps x[a .. (a+n-1)] with x[b .. (b+n-1)]. */private static void vecswap(int x[], int a, int b, int n) {for (int i = 0; i < n; i++, a++, b++) swap(x, a, b);}/** * Returns the index of the median of the three indexed integers. */private static int med3(int x[], int a, int b, int c) {return (x[a] < x[b] ? (x[b] < x[c] ? b : x[a] < x[c] ? c : a) : (x[b] > x[c] ? b : x[a] > x[c] ? c : a));}
1.1.2、分析
(1)數組長度小于7,那么排序時基于基本的插入排序算法(2)數組長度大于7,那么在使用的優化后的快速排序,對應數組長度在7和40之間的數組,取的切分元素相對來說簡單點
1.2、JDK1.7
1.2.1、源碼:
public static void sort(int[] a) {DualPivotQuicksort.sort(a);}// 下面方法來自:java.util.DualPivotQuicksort#sort(int[])public static void sort(int[] a) {sort(a, 0, a.length - 1);}/** * If the length of an array to be sorted is less than this * constant, Quicksort is used in preference to merge sort. */private static final int QUICKSORT_THRESHOLD = 286;/** * The maximum number of runs in merge sort. */private static final int MAX_RUN_COUNT = 67;/** * The maximum length of run in merge sort. */private static final int MAX_RUN_LENGTH = 33;public static void sort(int[] a, int left, int right) {// Use Quicksort on small arrays if (right - left < QUICKSORT_THRESHOLD) {sort(a, left, right, true); return; } /* * Index run[i] is the start of i-th run * (ascending or descending sequence). */ int[] run = new int[MAX_RUN_COUNT + 1]; int count = 0; run[0] = left; // Check if the array is nearly sorted for (int k = left; k < right; run[count] = k) {if (a[k] < a[k + 1]) {// ascending while (++k <= right && a[k - 1] <= else="" if=""> a[k + 1]) {// descending while (++k < = right="" k="" -="">= a[k]); for (int lo = run[count] - 1, hi = k; ++lo < --hi; ) {int t = a[lo]; a[lo] = a[hi]; a[hi] = t; } } else {// equal for (int m = MAX_RUN_LENGTH; ++k <= right && a[k - 1] == a[k]; ) {if (--m == 0) {sort(a, left, right, true); return; } } } /* * The array is not highly structured, * use Quicksort instead of merge sort. */ if (++count == MAX_RUN_COUNT) {sort(a, left, right, true); return; } } // Check special cases if (run[count] == right++) {// The last run contains one element run[++count] = right; } else if (count == 1) {// The array is already sorted return; } /* * Create temporary array, which is used for merging. * Implementation note: variable "right" is increased by 1. */ int[] b; byte odd = 0; for (int n = 1; (n <<= 1) < count; odd ^= 1); if (odd == 0) {b = a; a = new int[b.length]; for (int i = left - 1; ++i < right; a[i] = b[i]); } else {b = new int[a.length]; } // Merging for (int last; count > 1; count = last) {for (int k = (last = 0) + 2; k <= count; k += 2) {int hi = run[k], mi = run[k - 1]; for (int i = run[k - 2], p = i, q = mi; i < hi; ++i) {if (q >= hi || p < mi && a[p] <= else="" if="" count="" for="" int="" i="right," lo="run[count" -="" --i="">= lo; b[i] = a[i] ); run[++last] = right; } int[] t = a; a = b; b = t; }}/** * Sorts the specified range of the array by Dual-Pivot Quicksort. * * @param a the array to be sorted * @param left the index of the first element, inclusive, to be sorted * @param right the index of the last element, inclusive, to be sorted * @param leftmost indicates if this part is the leftmost in the range */private static void sort(int[] a, int left, int right, boolean leftmost){}
在JDK7中,排序使用的雙軸快速排序,其要比傳統的單軸排序要快
雙軸快速排序:如果數組的長度小于QUICKSORT_THRESHOLD的話就會使用這個雙軸快速排序,而這個值是286
if (right - left < QUICKSORT_THRESHOLD) {sort(a, left, right, true); return;}
1.3、JDK1.8
1.3.1、源碼
public static void sort(int[] a) {DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0);}
DualPivotQuicksort.sort方法
private static final int QUICKSORT_THRESHOLD = 286;static void sort(int[] a, int left, int right, int[] work, int workBase, int workLen) {// Use Quicksort on small arrays,QUICKSORT_THRESHOLD為286,當要排序區間小于286時,發現調用了本類的重載sort方法 if (right - left < QUICKSORT_THRESHOLD) {sort(a, left, right, true); return; } /** * run[i] 意味著第i個有序數列開始的位置,(升序或者降序) **/ int[] run =new int[MAX_RUN_COUNT + 1]; int count=0; run[0] = left; // 檢查數組是不是已經接近有序狀態 for(int k = left; k < right; run[count] = k) {if(a[k] < a[k + 1]){// 升序 while(++k <= right && a[k - 1] <= else=""> a[k + 1]) {// 降序 while(++k <=right k="" -="">= a[k]); //如果是降序的,找出k之后,把數列倒置 for (int lo = run[count],hi = k;++lo < --hi) {int t = a[lo]; a[lo] = a[hi]; a[hi] = t; } } else {// 相等 for(int m = MAX_RUN_LENGTH; ++k <=right && a[k - 1] == a[k];) {// 數列中有至少MAX_RUN_LENGTH的數據相等的時候,直接使用快排。 // 這里為什么這么處理呢? if(--m == 0){sort(a, left, right, true); return; } } } /** * 數組并非高度有序,使用快速排序,因為數組中有序數列的個數超過了MAX_RUN_COUNT */ if(++count == MAX_RUN_COUNT) {sort(a, left, right, true); return; } } //檢查特殊情況 if(run[count] == right++){// 最后一個有序數列只有最后一個元素 run[++count] =right; // 那給最后一個元素的后面加一個哨兵 } else if(count == 1) {// 整個數組中只有一個有序數列,說明數組已經有序啦,不需要排序了 return; } /** * 創建合并用的臨時數組。 * 注意: 這里變量right被加了1,它在數列最后一個元素位置+1的位置 * 這里沒看懂,沒發現后面的奇數處理和偶數處理有什么不同 */ int[] b; byte odd=0; for(int n=1; (n <<= 1) < count; odd ^=1); if(odd == 0) {b=a;a= new int[b.length]; for(int i=left -1; ++i < right; a[i] = b[i]); } else {b=new int[a.length]; } // 合并 // 最外層循環,直到count為1,也就是棧中待合并的序列只有一個的時候,標志合并成功 // a 做原始數組,b 做目標數組 for(int last; count > 1; count = last) {// 遍歷數組,合并相鄰的兩個升序序列 for(int k = (last = 0) + 2; k <= count; k += 2) {// 合并run[k-2] 與 run[k-1]兩個序列 int hi = run[k], mi = run[k - 1]; for(int i = run[k - 2], p = i,q = mi; i < hi; ++i){// 這里我給源碼加了一個括號,這樣好理解一點。 之前總覺得它會出現數組越界問題, // 后來加了這個括號之后發現是沒有問題的 if(q >= hi || (p < mi && a[p] < = else="" count="" int="" i="right," lo="run[count" --i="">= lo; b[i] = a[i]); run[++last] = right; } //臨時數組,與原始數組對調,保持a做原始數組,b 做目標數組 int[] t = a; a = b; b = t; }}int length = right - left + 1;// INSERTION_SORT_THRESHOLD為47,發現當要排序的個數小于47個時,采用插入排序,采用了哨兵方法,對于新元素從他前一個一個一個比較// Use insertion sort on tiny arraysif (length < INSERTION_SORT_THRESHOLD) {if (leftmost) {/* * Traditional (without sentinel) insertion sort, * optimized for server VM, is used in case of * the leftmost part. */ for (int i = left, j = i; i < right; j = ++i) {int ai = a[i + 1]; while (ai < a[j]) {a[j + 1] = a[j]; if (j-- == left) {break; } } a[j + 1] = ai; } } else {/** * 首先跨過開頭的升序的部分 */ do {if(left > right) {return; } }while(a[++left] >= a[left - 1]); /** * 這里用到了成對插入排序方法,它比簡單的插入排序算法效率要高一些 * 因為這個分支執行的條件是左邊是有元素的 * 所以可以直接從left開始往前查找。 */ for(int k = left; ++left <= k="++left)" int="" a1="" a2="a[left];">=a2 if(a1 < a2) {a2 = a1; a1 = a[left]; } //先把兩個數字中較大的那個移動到合適的位置 while(a1 < a[--k]) {a[k + 2] = a[k]; //這里每次需要向左移動兩個元素 } a[++k + 1] = a1; //再把兩個數字中較小的那個移動到合適的位置 while(a2 < a[--k]) {a[k + 1] = a[k]; //這里每次需要向左移動一個元素 } a[k + 1] = a2; } int last = a[right]; while(last < a[--right]) {a[right + 1] = last; } a[right + 1] = last; } return;}
至于大過INSERTION_SORT_THRESHOLD(47)的,用一種快速排序(雙軸快排)的方法:
從數列中挑出五個元素,稱為 “基準”(pivot);重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的后面(相同的數可以到任一邊)。在這個分區退出之后,該基準就處于數列的中間位置。這個稱為分區(partition)操作;遞歸地(recursive)把小于基準值元素的子數列和大于基準值元素的子數列排序。
總結:插入排序,快速排序,歸并排序三種排序的組合
1.4、parallelSort
并行排序,JDK1.8增加的新方法
// 并行排序的最小數組長度private static final int MIN_ARRAY_SORT_GRAN = 1 << 13;public static void parallelSort(int[] a) {int n = a.length, p, g; // 如果數據的長度小于 MIN_ARRAY_SORT_GRAN(1 << 13) if (n <= MIN_ARRAY_SORT_GRAN || // 或者當前并行度級別是 1的話,仍然使用常規的雙軸快速排序 (p = ForkJoinPool.getCommonPoolParallelism()) == 1) DualPivotQuicksort.sort(a, 0, n - 1, null, 0, 0); else // 否則使用并行排序 new ArraysParallelSortHelpers.FJInt.Sorter (null, a, new int[n], 0, n, 0, ((g = n / (p << 2)) <= MIN_ARRAY_SORT_GRAN) ? MIN_ARRAY_SORT_GRAN : g).invoke();}
2、搜索:binarySearch
主要用于快速從數組中查找對應的值,如果查找到了,返回的是對應數組的下標的值;如果查詢不到則返回負數;
二分查找確保數組一定是有序的,否則可能找不到對應的數據
但是該方法有有一個問題:如果一個數組當中有多個元素,其無法保證匹配的到底是哪一個
// a:我們要搜索的數組,fromIndex:從那里開始搜索,默認是0; toIndex:搜索到何時停止,默認是數組大小// key:我們需要搜索的值 // c:外部比較器private staticint binarySearch0(T[] a, int fromIndex, int toIndex, T key, Comparator c) {// 如果比較器 c 是空的,直接使用 key 的 Comparable.compareTo 方法進行排序 // 假設 key 類型是 String 類型,String 默認實現了 Comparable 接口,就可以直接使用 compareTo 方法進行排序 if (c == null) {// 這是另外一個方法,使用內部排序器進行比較的方法 return binarySearch0(a, fromIndex, toIndex, key); } int low = fromIndex; int high = toIndex - 1; // 開始位置小于結束位置,就會一直循環搜索 while (low <= low="0,high" mid="(low" int="">>> 1; T midVal = a[mid]; // 比較數組中間值和給定的值的大小關系 int cmp = c.compare(midVal, key); // 如果數組中間值小于給定的值,說明我們要找的值在中間值的右邊 if (cmp < 0) low = mid + 1; // 我們要找的值在中間值的左邊 else if (cmp > 0) high = mid - 1; else // 找到了 return mid; // key found } // 返回的值是負數,表示沒有找到 return -(low + 1); // key not found.}
3、數據拷貝:copyOf和copyRange
拷貝整個數組:copyOf
public static int[] copyOf(int[] original, int newLength) { int[] copy = new int[newLength]; System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy;}
拷貝部分數組:copyOfRange
// original 原始數組數據// from 拷貝起點// to 拷貝終點public static char[] copyOfRange(char[] original, int from, int to) {// 需要拷貝的長度 int newLength = to - from; if (newLength < 0) throw new IllegalArgumentException(from + " > " + to); // 初始化新數組 char[] copy = new char[newLength]; // 調用 native 方法進行拷貝,參數的意思分別是: // 被拷貝的數組、從數組那里開始、目標數組、從目的數組那里開始拷貝、拷貝的長度 System.arraycopy(original, from, copy, 0, Math.min(original.length - from, newLength)); return copy;}
基本上調用的是System.arrayCopy方法。
另外在在ArrayList的toArray方法中,其調用的也是Arrays里的copyOf方法,因為ArrayList的底層實現是數組;
4、數組填充:fill
5、數組轉換為結婚:asList
public staticListasList(T... a) { return new ArrayList<>(a);}
該方法有以下需要注意的:
其返回的集合不是java.util.ArrayList的實例,而是Array的內部類:java.util.Arrays.ArrayList;java.util.Arrays.ArrayList不能對集合進行增、刪操作,其沒有實現AbstractList類中的add、remove方法;常見使用方法是:Listlist = new ArrayList<>(Arrays.asList(T...a));,可以將其作為參數傳到對應集合的構造方法里面;
二、Collections
為方便集合操作而產生的工具類。
Collections也提供sort和binarySearch方法,其sort方法底層調用就是Arrays.sort方法,而binarySearch底層重寫了二分查找算法,實現邏輯和Arrays的二分查找算法一致
1、sort()方法實現
public staticvoid sort(Listlist)
1.1、JDK1.6
1.1.1、源碼
// 基本方法public staticvoid sort(Listlist) {Object[] a = list.toArray(); Arrays.sort(a); ListIteratori = list.listIterator(); for (int j=0; j<A.LENGTH; j++)="" {i.next(); i.set((T)a[j]); }}/**********************下面方法未自Arrays***********************/// 調用 Arrays.sort(Object[] a) 排序方法,This algorithm offers guaranteed n*log(n) performance.public static void sort(Object[] a) {Object[] aux = (Object[])a.clone(); mergeSort(aux, a, 0, a.length, 0);}/** * Tuning parameter: list size at or below which insertion sort will be * used in preference to mergesort or quicksort. */private static final int INSERTIONSORT_THRESHOLD = 7;/** * Src is the source array that starts at index 0 * Dest is the (possibly larger) array destination with a possible offset * low is the index in dest to start sorting * high is the end index in dest to end sorting * off is the offset to generate corresponding low, high in src */private static void mergeSort(Object[] src, Object[] dest, int low, int high, int off) {int length = high - low; // Insertion sort on smallest arrays if (length < INSERTIONSORT_THRESHOLD) {for (int i = low; i < high; i++) for (int j = i; j > low && ((Comparable) dest[j - 1]).compareTo(dest[j]) > 0; j--) swap(dest, j, j - 1); return; } // Recursively sort halves of dest into src int destLow = low; int destHigh = high; low += off; high += off; int mid = (low + high) >>> 1; mergeSort(dest, src, low, mid, -off); mergeSort(dest, src, mid, high, -off); // If list is already sorted, just copy from src to dest. This is an // optimization that results in faster sorts for nearly ordered lists. if (((Comparable) src[mid - 1]).compareTo(src[mid]) <= 0) {System.arraycopy(src, low, dest, destLow, length); return; } // Merge sorted halves (now in src) into dest for (int i = destLow, p = low, q = mid; i < destHigh; i++) {if (q >= high || p < mid && ((Comparable) src[p]).compareTo(src[q]) <= 0) dest[i] = src[p++]; else dest[i] = src[q++]; }}private static void swap(Object[] x, int a, int b) {Object t = x[a]; x[a] = x[b]; x[b] = t;}
1.2、JDK1.7
1.2.1、源碼
public staticvoid sort(Listlist) {Object[] a = list.toArray(); Arrays.sort(a); ListIteratori = list.listIterator(); for (int j=0; j<A.LENGTH; j++)="" {i.next(); i.set((T)a[j]); }}//Arrays.sort方法public static void sort(Object[] a) {if (LegacyMergeSort.userRequested) legacyMergeSort(a); else ComparableTimSort.sort(a);}static final class LegacyMergeSort {private static final boolean userRequested = java.security.AccessController.doPrivileged( new sun.security.action.GetBooleanAction( "java.util.Arrays.useLegacyMergeSort")).booleanValue();}/** To be removed in a future release. */private static void legacyMergeSort(Object[] a) {Object[] aux = a.clone(); mergeSort(aux, a, 0, a.length, 0);}private static void mergeSort(Object[] src, Object[] dest, int low, int high, int off) {int length = high - low; // Insertion sort on smallest arrays if (length < INSERTIONSORT_THRESHOLD) {for (int i=low; ilow && ((Comparable) dest[j-1]).compareTo(dest[j])>0; j--) swap(dest, j, j-1); return; } // Recursively sort halves of dest into src int destLow = low; int destHigh = high; low += off; high += off; int mid = (low + high) >>> 1; mergeSort(dest, src, low, mid, -off); mergeSort(dest, src, mid, high, -off); // If list is already sorted, just copy from src to dest. This is an // optimization that results in faster sorts for nearly ordered lists. if (((Comparable)src[mid-1]).compareTo(src[mid]) <= 0) {System.arraycopy(src, low, dest, destLow, length); return; } // Merge sorted halves (now in src) into dest for(int i = destLow, p = low, q = mid; i < destHigh; i++) {if (q >= high || p < mid && ((Comparable)src[p]).compareTo(src[q])<=0) dest[i] = src[p++]; else dest[i] = src[q++]; }}/** * Swaps x[a] with x[b]. */private static void swap(Object[] x, int a, int b) {Object t = x[a]; x[a] = x[b]; x[b] = t;}// ComparableTimSort
1.3、JDK1.8
2、集合的最大、最小值
max方法提供了兩種實現
// 沒有比較器的,那么默認非泛型必須實現了Comparable接口,否則編譯的時候會報錯,因為其底層是調用Comparable的compareTo方法來進行比較的;// 泛型必須繼承Objec且實現Comparable接口;public staticT max(Collection coll) {Iterator i = coll.iterator(); T candidate = i.next(); while (i.hasNext()) {T next = i.next(); if (next.compareTo(candidate) > 0) candidate = next; } return candidate;}// 帶比較器,跟不帶比較器的類似;public staticT max(Collection coll, Comparator comp) {if (comp==null) return (T)max((Collection) coll); Iterator i = coll.iterator(); T candidate = i.next(); while (i.hasNext()) {T next = i.next(); if (comp.compare(next, candidate) > 0) candidate = next; } return candidate;}
3、多張類型的集合
Collections對原始集合進行了封裝,提供了:線程安全的集合、不可變的集合;
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-R1ReBn5L-1580104538820)(集合/image/Collections-InnerClass.png)]
3.1、線程安全的集合
線程安全的集合都是以Synchronized開頭
SynchronizedListSynchronizedMapSynchronizedSetSynchronizedSortedMapSynchronizedSortedSet
上述線程安全的集合都是通過synchronized代碼塊來實現的,雖然都是線程安全的,但是在實際應用中避免使用這些類;
3.2、不可變集合
不可變集合都是Unmodifiable開頭,這類方法的操作是會從原集合中得到一個不可變的新集合,新集合只能訪問,不能修改;否則拋出異常;
UnmodifiableCollection:為只讀集合
static class UnmodifiableListextends UnmodifiableCollectionimplements List{public E set(int index, E element) {// 拋出異常 throw new UnsupportedOperationException(); } public void add(int index, E element) {// 拋出異常 throw new UnsupportedOperationException(); } public E remove(int index) {// 拋出異常 throw new UnsupportedOperationException(); } public int indexOf(Object o) {return list.indexOf(o);} public int lastIndexOf(Object o) {return list.lastIndexOf(o);} public boolean addAll(int index, Collection c) {// 拋出異常 throw new UnsupportedOperationException(); } @Override public void replaceAll(UnaryOperatoroperator) {// 拋出異常 throw new UnsupportedOperationException(); } @Override public void sort(Comparator c) {// 拋出異常 throw new UnsupportedOperationException(); }}
三、Objects
1、相等
主要有兩個方法:deepEquals、equals,其中deepEquals主要是判斷數組的,后面equals主要判斷基本類型和自定義類型的
public static boolean deepEquals(Object a, Object b) {if (a == b) return true; else if (a == null || b == null) return false; else return Arrays.deepEquals0(a, b);}public static boolean equals(Object a, Object b) {return (a == b) || (a != null && a.equals(b));}
2、判空
Objects.isNull(Object obj)Objects.nonNull(Object obj)Objects.requireNonNull(T obj)Objects.requireNonNull(T obj, String message)Objects.requireNonNull(T obj, SuppliermessageSupplier)
標簽:
相關推薦:
精彩放送:
- []LeetCode實戰:row_number函數用法
- []常用的shell腳本 linux腳本之間的傳遞參數
- []【教程】矩陣相乘時 我們先寫位移再縮放
- []立大志,明大德,成大才,延安紅街能賦予你無窮的向上力量
- []【當前熱聞】2月3日匯市觀潮:歐元、英鎊和日元技術分析
- []【世界播資訊】數據字典中的同義詞:user_synonyms
- []當前觀察:美原油交易策略:非農或無力拯救油價,周線或迎兩連跌
- []前沿資訊!廈門出臺保障性租賃住房優惠政策 包含金融、土地、稅費等方面
- []當前觀察:187億美元!康菲石油2022年利潤翻倍 加入石油巨頭大豐收隊列
- []現貨黃金交易策略:決戰非農,金價面臨大跌風險?
- []世界簡訊:常潤股份:公司已預約于2023年4月11日披露2022年報
- []元道通信:公司目前該項目合作已經終止。相關信息以公司在巨潮網披露的公告為準祝您生活愉快
- []微速訊:青島某共有產權房“爆雷”?城投公司回應來了
- []上海楊浦保障性租賃住房112項目復工 建成后可提供332套
- []頭條:降息潮下,存量房房貸能降嗎?
- []【世界播資訊】欽州:“十四五”期間保障性租賃住房發展目標為3000套(間)
- []天天播報:雙樂股份:相比印度,公司在持續供貨能力和供貨的及時性、產品的環保性、齊全性和質量穩定性上具有較大優勢
- []社??ㄔ趺唇壎ㄣy行卡(社??ㄖ匦陆壎ㄣy行卡)
- []去銀行存錢可以特批信用卡不(儲蓄卡存錢可以辦信用卡嗎)
- []天天即時看!人沒到60歲死了農村養老保險白交了嗎(人沒到60歲死了社保白交了嗎)
- []今日熱訊:高鳳篤學誦讀翻譯_高鳳癡迷誦讀譯文
- []每日速遞:中金:對港股維持積極看法
- []速讀:寧波購房最高送18萬消費券!
- []頭條焦點:黃金因獲利了結回調,專家仍看好其2023年表現!
- []全球實時:浩洋股份:公司目前兩個提升產能的募投項目正在有序加快推進中,項目投產后將為公司提升較大的產能
- []世界觀速訊丨力合科技:公司堅持以自主創新為主的技術發展戰略,研發生產具有自主知識產權的國產化儀器設備
- []尚品宅配8億元定增募資獲深交所通過
- []環球簡訊:地產“陽康”了嗎?
- []紐泰格:公司目前已與部分空氣懸架客戶在業務洽談中,已經被納入供應商體系
- []效仿恒大?石家莊房企潤江集團要搞新能源汽車,焦賀錢從哪來
- []快報:今年1月樓市低迷 內房股多數受壓 合景泰富集團(01813)跌6.83%
- []觀熱點:房企年內融資已近900億元
- []世界今亮點!碩貝德:公司持續批量為北美客戶提供了ARVR天線及散熱產品
- []環球視訊!【BT金融分析師】Carvana股價暴漲108%,分析師稱上演了一幕絕地求生的戲碼
- []新資訊:一張圖:黃金原油外匯股指"樞紐點+多空占比"一覽(2023/02/03周五)
- []全球熱文:* 理想汽車跌超5%,成交額超4.70億港元
- []今日訊!這家儲能公司境外毛利率超境內3倍
- []播報:原單位社保不給減員怎么辦(停保不給辦減員怎么辦)
- []全球關注:鋰電材料產銷量增長 貝特瑞2022年預盈超21億元
- []消息!60MW/120MWh儲能電站投產!
- []怎樣用花唄還信用卡還款(怎樣用花唄還信用卡還款)
- []平安產險正式編制員工待遇(平安集團b類員工薪酬)
- []天天新動態:信用卡最高可分期金額什么意思呀(信用卡最高可分期金額什么意思)
- []出租車擋道被消防車剮蹭后負全責詳細內容
- []環球熱門:中南建設:1月合同銷售金額32.4億元
- []全球視訊!中英科技:截至1月31日,公司股東總數為11501戶
- []當前視點!中糧置業40億元小公募債券獲深交所通過
- []當前關注:江西全省2023年度保障性租賃住房籌集(開工)目標任務為165766套(間)
- []世界通訊!香港一月一手私宅買賣起步回升 錄341宗
- []隔離霜和防曬霜一樣嗎?隔離霜和防曬霜的區別是什么?
- []熱消息:華潤置地48.8億港元認購香港14.7萬平商住項目45%股權
- []當前滾動:新年祝福怎么寫?新年對同事的祝福語有哪些?
- []六一兒童節給心儀的女朋友送什么禮物?適合送女朋友的禮物推薦
- []國內光刻氣產品進入ASML供應鏈!電子特氣國產替代將加速提升
- []【世界聚看點】寧德時代回應海外上市
- []世界快資訊:千山暮雪劉愷威大結局是什么?千山暮雪劇情介紹
- []全球微動態丨陽光車險和平安車險哪個好一點(平安車險和人保車險哪個好)
- []曹操墓是怎么發現的?曹操墓在哪里?
- []環球速看:蘭州至西藏經過哪里?自駕游經過的地方有哪些?
- []環球微頭條丨國軒電池裝車易捷特,進入雷諾-日產-三菱聯盟供應商體系
- []【世界速看料】男士t恤哪個牌子好?男士t恤較好的品牌有哪些?
- []街籃手游哪個中鋒好?最強中鋒有哪些推薦?
- []天天快報!成語壯志凌云是什么意思?壯志凌云出自哪里?
- []北京社保還有存折嗎(北京社??]有存折能用嗎)
- []全球熱門:浙江景寧綠電100%泛微網工程正式投運
- []天天最新:燃料電池企業“簽約潮”背后
- []世界百事通!企事業養老金什么時候并軌(企事業單位養老金并軌實施時間)
- []6.5億元!江特電機擬在江西高安投建年產3萬噸碳酸鋰項目
- []最資訊丨華菱線纜:公司未參加該項目投標
- []財面兒|景瑞控股1月合約銷售額3.42億元
- []訊息:港1月住宅樓宇買賣合約3051份 按月上升21.7%
- []天天簡訊:首鋼商業地產6.36億元ABS狀態更新為“已受理”
- []前沿熱點:成都城建30億元供應鏈ABS項目狀態更新為“已反饋”
- []全球看熱訊:家居丨東方雨虹:控股股東李衛國1637.43萬股股份質押展期
- []當前觀點:恩捷股份:公司各項生產經營活動均有序進行;隔膜產品可存放時間較長
- []快可電子:今年將有上海光伏展、德國慕尼黑光伏展、各級光伏協會等機構舉辦的展會
- []勘設股份:投資者朋友截至2023年1月20日,公司股東總戶數為22436
- []香港旅游業用工需求大增,迪士尼樂園開過萬月薪招服務員且無學歷要求
- []環球觀點:湖北大悟抽水蓄能電站項目開工
- []焦點觀察:農業戶口買房能否辦理銀行按揭貸款
- []【環球快播報】華夏航空:遭處罰?
- []3年漫長資產重組收尾,云南城投從此不再是“房企”
- []全球快資訊丨房企去年業績分化明顯:28家預盈、36家預虧總額超千億
- []洪匯新材:截至2023年1月31日,公司股東人數為10,151戶
- []今日聚焦!龍洲股份:公司現代物流業務涵蓋了瀝青供應鏈、港口碼頭綜合服務、物流園區經營等
- []當前視點!“招滬籍單身,酬金20萬”,上海10萬+紅盤的工地外,有人做起了房票買賣生意
- []快手上的內科醫生劉勇剛——盡職盡責,精益求精
- []眾業達:投資者朋友截至目前,公司無AIGC技術應用及技術儲備
- []標準股份:截至2023年1月31日,公司股東人數約為2.51萬戶
- []【焦點熱聞】每經熱評|提前還房貸人群增多 說明“房住不炒”收到了實效
- []如何正確應對流感問題?流感靈膠囊提供專業助力
- []集中供地制度被取消?權威部門回應
- []世界500強巨鱷入場!306億儲能電池超級工廠落地!
- []每日熱點:豐元(云南)年產20萬噸磷酸鐵鋰正極材料項目一期投產
- []?;履茉赐瞥鍪卓?75Ah大容量儲能電芯和鈉離子電池
- []天天熱門:甘肅省宕昌抽水蓄能電站預可研審查會議召開
- []滾動:鼎勝新材與LG新能源簽約 四年提供約6.1萬噸鋰電池鋁箔
- []個人參保日期和首次參保日期不同(參工時間和參保時間不一致怎么辦)
- []【世界聚看點】一份文件流傳開來,集中供地制度要取消?專家回應:不可能
- []環球消息!豪森股份:豪森公司通過為客戶提供汽車生產制造“軟硬結合”一體化的制造解決方案獲得營業收入及利潤
- B站注冊資本增幅400%至5億 目前由陳睿全資持股
- 光源資本出任獨家財務顧問 沐曦集成電路10億元A輪融資宣告完成
- 巨輪智能2021年上半年營收11.24億元 期內研發費用投入增長19.05%
- 紅棗期貨尾盤拉升大漲近6% 目前紅棗市場總庫存約30萬噸
- 嘉銀金科發布2021年Q2財報 期內凈利潤達1.27億元同比增長208%
- 成都銀行2021上半年凈利33.89億元 期內實現營收同比增長17.27億元
- 汽車之家發布2021年第二季度業績 期內新能源汽車品牌收入增長238%
- 中信銀行上半年實現凈利潤290.31億元 期末不良貸款余額706.82億元
- 光伏概念掀起漲停潮交易價格創新高 全天成交額達1.29億元
- 上半年生物藥大增45% 關鍵財務指標好轉營收賬款持續下降
- 環球視點!10萬股東請留意!兩家A股公司同日公告觸及退市!這些公司也拉響警報(名單)
- 環球視訊!杭州:截至2022年底累計籌集保障性租賃住房房源14.6萬套
- 全球信息:福蓉科技:截至2023年1月31日股東數為16656戶
- 有小額貸款可以申請車貸嗎(有小額貸款可以申請車貸嗎)
- 全球今頭條!音像資料
- 每日關注!深圳社保轉到惠州去怎么轉的(深圳社保轉到惠州去怎么轉)
- 游客行李被酒店清出房間、司機中途甩客,西雙版納旅游亂象頻現
- 社保綁定的銀行卡能取錢嗎(社??ń壎ㄣy行卡可以取錢嗎)
- 世界報道:無錫建投20億元小公募項目狀態更新為“已反饋”
- 每日頭條!星巴克第一財季全球凈新開459家門店 中國門店總數達6090家
- 【焦點熱聞】珠海華發集團15億元公司債將于2月6日付息 票面利率為4.32%
- 環球動態:最新龍虎榜:機構買入云從科技超1億,知名游資買入藍英裝備
- 不是廈門戶口去鼓浪嶼去哪個碼頭(非廈門戶口去鼓浪嶼從哪個碼頭)
- 每日時訊!乙肝醫保能報銷嗎(乙肝門診檢查費用能報銷嗎)
- 中國人壽為什么在美國上市(中國人壽為什么在美國上市)
- 微資訊!乙肝干擾素2022年能報銷嗎醫保(乙肝干擾素2022年能報銷嗎)
- 當前頭條:北京醫保存折和醫保卡里的錢一樣嗎(北京醫保存折和卡有什么區別)
- 天天快資訊:信用卡追回利息對卡有影響嗎(信用卡退息對信用卡有影響嗎)
- 體外碎石可以醫保報銷嗎(門診做體外碎石住院醫保能報銷嗎)
- 今日最新!車保險理賠流程怎么賠付
- 世界快看:財意險都是包括什么
- 【獨家焦點】樓市觀察丨金光華再推別墅“回鍋” 2022深圳樓市中的冷熱參差
- 運險費是退貨時不用付運費嗎
- 最新資訊:英力特:截止2023年1月31日,公司股東總數為29,360
- 天天觀天下!在海洋運輸貨物保險中,共同海損屬于
- 30歲女子養胃2年,胃炎反而加重,醫生:這1水或是胃炎“加速器”
- 環球信息:二連浩特向浩貿易有限公司
- 上海平安銀行是正規銀行嗎(平安銀行是正規銀行嗎2020)
- 全球快播:海德股份:2月1日公司高管曹體倫、廖緒文增持公司股份合計4.17萬股
- 棲霞建設:副總裁湯群辭職
- 頭條:科倫藥業:2月1日公司高管馮昊、賴德貴增持公司股份合計7.4萬股
- 全球消息!CBA新消息!籃協再頒新規,遼籃又被針對,廣東男籃成贏家
- 五險能單獨買幾項嗎(五險能單獨買幾項嗎)
- 證監會:在促進房地產平穩健康發展等重點領域推出更多務實舉措
- 當前快訊:證監會:穩妥有序化解私募基金、債券違約等重點領域風險
- 九典制藥:2月1日公司高管段立新減持公司股份合計130.03萬股
- ST路通:2月1日公司高管莊小正減持公司股份合計2萬股
- 華夏幸福49.6億美元債以發新債券向債權人分配方式實施重組交割
- 世界快資訊丨深房中協:嚴禁房地產中介機構等參與違規利用“經營貸”
- 熱資訊!順豐同城:轉換H股將于2月7日在聯交所上市
- 【環球熱聞】ST商城下修2022年業績預告 預計虧損額增至2.28億元左右
- 泰福泵業:2月1日公司高管毛世良減持公司股份合計2萬股
- 全球資訊:66鴻運b型保險98版利差返還型怎么樣(鴻運a型保險98版利差返還型領取)
- 60歲前身故社保退多少錢一個月(人去世社??ㄔ趺赐吮?
- 全球熱議:如何投訴光大信用卡(怎么投訴光大信用卡銀行)
- 行動教育:1月18日至1月31日公司高管李宜增持公司股份合計8000股
- 北辰實業:北辰集團委托北辰商管提供辰運物業及亞市管理服務
- 泰禾智能:2月1日公司高管王金誠減持公司股份合計47.75萬股
- 每日時訊!奧來德股東曲志恒減持7350股 套現41.7萬 2022年前三季度公司凈利1.12億
- 【全球報資訊】鉑力特:2月2日公司高管雷開貴減持公司股份合計10萬股
- 全球熱訊:天津中綠電:不存在房地產業務及募資投入房地產情況
- 今日熱文:中南建設1月合同銷售金額32.4億 同比下滑近三成
- 每日快看:省廣集團:公司根據客戶需求開展相關業務
- 全球今亮點!華僑城“18僑城03”公司債將兌付并摘牌 存續規模0.4億元
- 三部門聯合發布高森林火險橙色預警
- 世界速訊:中南建設近期累計被動減持約1.63億股 占總股本4.26%
- 焦點速看:安達維爾:2022年度公司營收情況請關注公司將于4月18日在巨潮資訊網披露的年度報告
- 每日快報!為什么養老保險和醫療保險月份不一樣(為什么養老保險和醫療保險月份不一樣)
- 全球快資訊:信貸公司貸款收取多少手續費合適(信貸公司貸款收取多少手續費合理)
- 環球報道:華貿物流:股東計劃減持公司股份 累計擬減持不超過93.03萬股
- 天天新資訊:醋化股份:2月2日公司高管慶九、帥建新、錢進、薛金全、顧清泉、丁彩峰減持公司股份合計408.96萬股
- 【環球快播報】百納千成:影視項目的最新動態請關注公司官網或公司微信公眾號“百納千成”
- 【世界播資訊】錦和商管向北京億鵬所提供2300萬元財務資助 已全部轉為股權轉讓款
- 全球視點!福建投資開發5億元公司債券將付息 利率3.69%
- 創世紀:公司五軸機床正持續開發中,部分型號已進入小批量生產階段;3C類機床訂單尚在逐步恢復中
- 天天要聞:邁普醫學:公司產品有在部隊醫院中使用
- 酒店業率先復蘇,超七成企業春節營收恢復至疫前
- 精選!民生信用卡最低還款額及利息怎么計算的(民生信用卡還款額度計算方法)
- 微動態丨中國人壽人士助理(中國人壽人事助理是做什么)
- 當前訊息:肋間神經炎
- 最資訊丨新地NOVO LAND 第2B期已取得預售樓花同意書
- 天天看熱訊:景瑞控股1月合約銷售額3.42億元 同比下降46%
- 焦點速遞!顧家家居:截止2023年1月底已累計回購54.53萬股 耗資逾2000萬元
- 鄭中設計:截至2023年1月31日公司股東人數為13,096戶
- 每日看點!青島市一季度394個城市更新建設項目集中開工
- 新資訊:曠達科技:芯投微及其控股公司產品已有用于模組的批量訂單
- 世界快報:天虹股份:一期增持計劃所持公司162萬股非交易過戶已登記完成
- 世界快看點丨百聯股份:公司將嚴格按照上交所的相關規定履行信息披露義務
- 155億之后又108億!你投的嘛,偶像!
- 全球熱點!充電樁建設既要速度更要質量
- 環球熱門:比亞迪股份有限公司董事長兼總裁王傳福:打造新能源汽車王牌
- 贛鋒去年凈利預計超180億元,同比增長最高320%
- 年滿60歲可以參加職工醫保嗎(滿了60歲能買職工醫保嗎)
- 天天微資訊!早上可以還信用卡嗎(信用卡還款日凌晨就能還款嗎)
- 佛山村田五礦精密材料有限公司關于綠色電力供應的合同簽訂到2030年,實現100%綠色電力生產
- 滄州明珠2022年目標銷售2.86億㎡隔膜 擬受讓明珠鋰電10%股權
- 2023原油市場展望,中海油的投資機會
- 當前快看:上游震蕩博弈 光伏組件定價遇阻觀望(2023.2.2)
- 環球速訊:TOP10的變與不變!2022中國市場動力電池裝機解析
- 每日動態!1.47GW!國華投資發布2023年第一批光伏組件(182、210)采購項目
- 山羊胡子怎么畫?山羊胡子的畫法?
- 通訊!網絡中tag什么意思?網絡中tag是指什么?
- 孤戰的演員有哪些?孤戰劇情介紹
- 每日熱門:重案六組佟林是好是壞?重案六組佟林扮演者是誰?
- 世界快資訊:氣功大師王林有什么本事?王林資料介紹
- 創造營王藝晨為什么退賽?創造營節目組給出的理由是什么?
- 北京海淀成為全國首個生產總值破萬億的地市級區縣
- 【聚看點】2月2日焦點科技漲停分析:跨境電商,醫療信息化,金融科技概念熱股
- 全球觀察:關于雷鋒的資料有哪些?雷鋒的故事有哪些?
- 每日熱門:網絡上曹縣是什么梗?曹縣是什么意思?