Ⅰ java String數組里的東西怎麼取 (比如 String[] A = {1,2,3,4})
Java數組是在Java編程中經常使用的一個類,下面是對Java數組String的使用方法:
1、Java數組的語法:String[數組下標], Java數組的下標是從0開始的。
Ⅱ 關於java的binarysearch()方法
Java中的binarySearch方法是一種用於在有序數組中查找特定元素的演算法。其方法主要基於二分查找法實現,能快速地在有序數組中定位指定元素的位置。下面是具體的方法和解釋:
Java中的binarySearch方法是基於二分查找法的實現,用於在有序數組中查找特定元素。此方法返回的是指定元素在數組中的索引值,若不存在則返回負值。同時,使用該方法需要注意數組必須是有序的。
具體解釋:
基本介紹與工作原理
Java的binarySearch方法是數組工具類java.util.Arrays中的一個方法。該方法基於二分查找演算法實現,適用於已排序的數組。二分查找演算法的核心思想是不斷縮小搜索范圍,每次將搜索范圍縮小一半,直到找到目標元素或搜索范圍為空。這種方法的時間復雜度為O,相對於線性查找的O,在處理大規模數據時效率更高。
方法參數與返回值
binarySearch方法接受三個參數:待搜索的數組、待搜索元素的起始位置和結束位置。它會返回目標元素在數組中的位置索引,如果數組中沒有該元素,則返回負值。插入點的定義是如果插入元素會導致數組保持有序的最小索引位置。所以如果沒有找到目標元素,該方法將指示我們如何將元素添加到數組中保持其有序性。
使用注意事項
使用binarySearch方法時,必須確保數組是有序的。如果數組未排序,結果將不可預測。此外,對於大型數組,該方法非常高效;但對於小型數組,可能不如簡單的線性搜索來得直觀和快速。在實際應用中,應根據具體情況選擇使用哪種搜索方法。同時,由於該方法涉及復雜的演算法邏輯,開發者在使用時需要有相應的編程基礎和演算法知識。
總結來說,Java中的binarySearch方法是一種高效的搜索演算法,適用於在已排序的數組中查找特定元素。它的核心思想是二分查找法,能夠在逐步縮小搜索范圍的同時快速定位目標元素的位置。
Ⅲ 在Java中判斷數組中包含某個元素的幾種方式的比較
直接上代碼:
package test.contain.lishaojie;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class TestContain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] arr = new String[] { "DD", "CC", "DD", "FF", "KK"};
String target ="A";
int times = 1000;//次數
//轉換成list方式
long startTime = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
ByList(arr, target);
}
long endTime = System.currentTimeMillis();
long ration = endTime - startTime;
System.out.println("list方式: " + ration / 1000000);
//轉換成set方式
startTime = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
BySet(arr, target);
}
endTime = System.currentTimeMillis();
ration = endTime - startTime;
System.out.println("set方式: " + ration / 1000000);
//直接循環方式
startTime = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
ByForLoop(arr, target);
}
endTime = System.currentTimeMillis();
ration = endTime - startTime;
System.out.println("循環方式: " + ration / 1000000);
//二分法查找
startTime = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
ByArraysBinarySearch(arr, target);
}
endTime = System.currentTimeMillis();
ration = endTime - startTime;
System.out.println("二分法查找: " + ration / 1000000);
}
public static boolean ByList(String[] arr, String targetValue) {
return Arrays.asList(arr).contains(targetValue);
}
public static boolean BySet(String[] arr, String targetValue) {
Set<String> set = new HashSet<String>(Arrays.asList(arr));
return set.contains(targetValue);
}
public static boolean ByForLoop(String[] arr, String targetValue) {
for(String s: arr){
if(s.equals(targetValue))
return true;
}
return false;
}
public static boolean ByArraysBinarySearch(String[] arr, String targetValue) {
int a = Arrays.binarySearch(arr, targetValue);
if(a > 0)
return true;
else
return false;
}
}
運行結果如下:
list方式: 5
set方式: 22
循環方式: 2
二分法查找: 3
經過大量數據測試循環方式效率最高,其次是二分法,最後是list,和set因為因為將數組壓入Collection類型中,首先要將數組元素遍歷一遍,然後再使用集合類做其他操作。但是list方式明顯要比set方式快很多,這是為什麼呢?直接看代碼:首先
@SafeVarargs
@SuppressWarnings("varargs")
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
返回的是ArrayList所以set方式還要進行一次操作將ArrayList轉換成set,
public HashSet(Collection<? extends E> c) {
map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
addAll(c);
}
之一addAll方法:
public boolean addAll(Collection<? extends E> c) {
boolean modified = false;
for (E e : c)
if (add(e))
modified = true;
return modified;
}
又一次進行了選環,所以效率比較低,binggo
Ⅳ java下如何求數組中最大的那個數並求其下標
在Java編程中,如果需要找到數組中的最大值及其對應的下標,可以採用以下方式實現:
首先,檢查數組是否為空。如果數組長度大於0,則初始化變數index為0,同時將數組的第一個元素賦值給變數a。接著,遍歷數組中的每個元素,如果當前元素大於變數a,則更新變數a和index。
具體實現如下:
java
if(A.length > 0){
int index = 0;
int a = A[0];
for(int i=0; i < A.length; i++) {
if(a < A[i]){
a = A[i];
index = i;
}
}
System.out.println("數組中最大值是" + a + ",下標是" + index);
}
這段代碼的作用是遍歷數組A,找出其中的最大值及其對應的下標。首先,通過條件判斷確保數組不為空。然後,通過一個for循環遍歷數組中的每個元素。如果當前元素大於變數a,則更新變數a和index。最後,列印出數組中的最大值及其下標。
這種方法簡單直觀,適用於尋找數組中的最大值及其下標。需要注意的是,在遍歷數組時,要確保索引的范圍不會超出數組的長度,避免出現數組越界異常。
此外,對於大型數組,還可以考慮使用並行流來提高效率,例如:
java
int maxIndex = IntStream.range(0, A.length).parallel().rece((i, j) -> A[i] > A[j] ? i : j).getAsInt();
int maxValue = A[maxIndex];
System.out.println("數組中最大值是" + maxValue + ",下標是" + maxIndex);
這種方式利用了Java 8中的Stream API,通過並行流來提高查找效率,適用於處理大數據量的情況。
總之,無論是使用傳統的for循環遍歷,還是利用Java 8的Stream API,都可以有效解決在Java中找到數組中最大值及其下標的任務。
Ⅳ 在Java中,如何檢測一個數組中是否包含某一個數據
在Java中,檢測一個數組是否包含某一個數據,通常有四種方法:
(1)for循環
(2)轉換為List,調用Arrays.asList(arr).contains方法
(3)使用Set
(4)使用Arrays.binarySearch()方法
下面為上述四種方法的具體代碼實現:
1、使用for循環
publicstaticbooleanuseLoop(String[]arr,StringtargetValue){
for(Strings:arr){
if(s.equals(targetValue))
returntrue;
}
returnfalse;
}
/iknow-pic.cdn.bcebos.com/d62a6059252dd42a816ca8e00e3b5bb5c9eab810"target="_blank"title="點擊查看大圖"class="illustration_alink">/iknow-pic.cdn.bcebos.com/d62a6059252dd42a816ca8e00e3b5bb5c9eab810?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="//www.craffts.com/pc_d62a6059252dd42a816ca8e00e3b5bb5c9eab810"/>
2、轉換為List,調用Arrays.asList(arr).contains方法
publicstaticbooleanuseList(String[]arr,StringtargetValue){
returnArrays.asList(arr).contains(targetValue);
}
/iknow-pic.cdn.bcebos.com/8cb1cb1349540923258eca359f58d109b2de4992"target="_blank"title="點擊查看大圖"class="illustration_alink">/iknow-pic.cdn.bcebos.com/8cb1cb1349540923258eca359f58d109b2de4992?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="//www.craffts.com/pc_8cb1cb1349540923258eca359f58d109b2de4992"/>
3、使用Set
publicstaticbooleanuseSet(String[]arr,StringtargetValue){
SetStringset=newHashSetString(Arrays.asList(arr));
returnset.contains(targetValue);
}
/iknow-pic.cdn.bcebos.com/e61190ef76c6a7ef2dea016df0faaf51f2de66a9"target="_blank"title="點擊查看大圖"class="illustration_alink">/iknow-pic.cdn.bcebos.com/e61190ef76c6a7ef2dea016df0faaf51f2de66a9?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="//www.craffts.com/pc_e61190ef76c6a7ef2dea016df0faaf51f2de66a9"/>
4、使用Arrays.binarySearch()方法
特別說明:binarySearch()二分查找僅適用於有序數組,如果不是有序數組,則報異常
(String[]arr,StringtargetValue){
inta=Arrays.binarySearch(arr,targetValue);
if(a0){
returntrue;
}else{
returnfalse;
}}
/iknow-pic.cdn.bcebos.com/8ad4b31c8701a18bec0bbb04932f07082938fe9d"target="_blank"title="點擊查看大圖"class="illustration_alink">/iknow-pic.cdn.bcebos.com/8ad4b31c8701a18bec0bbb04932f07082938fe9d?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="//www.craffts.com/pc_8ad4b31c8701a18bec0bbb04932f07082938fe9d"/>
(5)java數組元素查找擴展閱讀:
Java種List列表的contains方法:
該方法是通過遍歷集合中的每一個元素並用equals方法比較是否存在指定的元素。
publicbooleancontains(Objecto){
IteratorEit=iterator();
if(o==null){
while(it.hasNext())
if(it.next()==null)
returntrue;
}else{
while(it.hasNext())
if(o.equals(it.next()))
returntrue;
}
returnfalse;
}
/iknow-pic.cdn.bcebos.com/64380cd7912397dd61e8334f5482b2b7d1a287ec"target="_blank"title="點擊查看大圖"class="illustration_alink">/iknow-pic.cdn.bcebos.com/64380cd7912397dd61e8334f5482b2b7d1a287ec?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="//www.craffts.com/pc_64380cd7912397dd61e8334f5482b2b7d1a287ec"/>