㈠ java 怎樣輸入字元串,並訪問其中的每一個元素呢
String 方法toCharArray() 將此字元串轉換為一個新的字元數組。
再訪問
㈡ java 如何獲取字元串中的某個值
先使用replace把var去掉str.replace("var ","");然後使用split分割";",在遍歷分割後字元串數組,每一內個元素都容用split分割"=",將分割後的數組存入map,然後需要哪個值就用map get一下就可以。
㈢ Java String數組里的東西怎麼取 (比如 String[] A = {1,2,3,4})
Java數組是在Java編程中經常使用的一個類,下面是對Java數組String的使用方法:
1、Java數組的語法:String[數組下標], Java數組的下標是從0開始的。
㈣ java查詢String中所有的元素並輸出重復次數
實現思路:就是將字元串變為一個一個的char類型,之後進行循環計數,同樣的加版1,之後權輸出計算結果。
importjava.util.ArrayList;
publicclassTest{
publicstaticvoidmain(String[]args){
Strings="abcdaebijkd";
ArrayListlist=newArrayList();
for(inti=0;i<s.length();i++){
charc=s.charAt(i);
if(s.indexOf(c,i+1)>-1){
Characterch=newCharacter(c);
if(!list.contains(ch))
list.add(ch);
}
}
for(inti=0;i<list.size();i++)
System.out.print(list.get(i)+",");
}
}
㈤ java中怎麼實現查找某個數組里的string值
如何檢查一個未排序的數組中是否包含某個特定值,這是一個在Java中非常實用並且頻繁使用的操作。另外,這也是Stack
Overflow上面非常受關注的問題。在得票數最多的答案中,可以看到,檢查數組中是否包含特定值可以用多種不同的方式實現,但是時間復雜度差別很大。
下面,我將為大家展示各種方法及其需要花費的時間。
1.檢查數組中是否包含特定值的四種不同方法
1)使用List:
public static boolean useList(String[] arr, String targetValue) {
return Arrays.asList(arr).contains(targetValue);
}
2)使用Set:
public static boolean useSet(String[] arr, String targetValue) {
Set<String> set = new HashSet<String>(Arrays.asList(arr));
return set.contains(targetValue);
}
3)使用一個簡單循環:
public static boolean useLoop(String[] arr, String targetValue) {
for(String s: arr){
if(s.equals(targetValue))
return true;
}
return false;
}
4)使用Arrays.binarySearch():
註:下面的代碼是錯誤的,這樣寫出來僅僅為了理解方便。binarySearch()只能用於已排好序的數組中。所以,你會發現下面結果很奇怪。
public static boolean useArraysBinarySearch(String[] arr, String targetValue) {
int a = Arrays.binarySearch(arr, targetValue);
if(a > 0)
return true;
else
return false;
}
2.時間復雜度
通過下面的這段代碼可以近似比較幾個方法的時間復雜度。雖然分別搜索一個大小為5、1K、10K的數組是不夠精確的,但是思路是清晰的。
public static void main(String[] args) {
String[] arr = new String[] { "CD", "BC", "EF", "DE", "AB"};
//use list
long startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
useList(arr, "A");
}
long endTime = System.nanoTime();
long ration = endTime - startTime;
System.out.println("useList: " + ration / 1000000);
//use set
startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
useSet(arr, "A");
}
endTime = System.nanoTime();
ration = endTime - startTime;
System.out.println("useSet: " + ration / 1000000);
//use loop
startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
useLoop(arr, "A");
}
endTime = System.nanoTime();
ration = endTime - startTime;
System.out.println("useLoop: " + ration / 1000000);
//use Arrays.binarySearch()
startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
useArraysBinarySearch(arr, "A");
}
endTime = System.nanoTime();
ration = endTime - startTime;
System.out.println("useArrayBinary: " + ration / 1000000);
}
結果:
useList: 13
useSet: 72
useLoop: 5
useArraysBinarySearch: 9
對於長度為1K的數組:
String[] arr = new String[1000];
Random s = new Random();
for(int i=0; i< 1000; i++){
arr[i] = String.valueOf(s.nextInt());
}
結果:
1
2
3
4
useList: 112
useSet: 2055
useLoop: 99
useArrayBinary: 12
對於長度為10K的數組:
String[] arr = new String[10000];
Random s = new Random();
for(int i=0; i< 10000; i++){
arr[i] = String.valueOf(s.nextInt());
}
結果:
useList: 1590
useSet: 23819
useLoop: 1526
useArrayBinary: 12
很明顯,使用簡單循環的方法比使用其他任何集合效率更高。許多開發者會使用第一種方法,但是它並不是高效的。將數組壓入Collection類型中,需要首先將數組元素遍歷一遍,然後再使用集合類做其他操作。
如果使用Arrays.binarySearch()方法,數組必須是已排序的。由於上面的數組並沒有進行排序,所以該方法不可使用。
實際上,如果你需要藉助數組或者集合類高效地檢查數組中是否包含特定值,一個已排序的列表或樹可以做到時間復雜度為O(log(n)),hashset可以達到O(1)。
㈥ 怎樣查詢一個JAVA String數組裡面所有的數在資料庫裡面對應的值
這個問題,只要從資料庫單個查詢出來再拼出來就行了.
select val from table where key = "a";
㈦ java中如何用String訪問對象的屬性
利用反射可以獲得類的變數名,給你個例子
public class MyTools {
public static void setAllComponentsName(Object f) {
// 獲取f對象對應類中的所有屬性域
Field[] fields = f.getClass().getDeclaredFields();
for(int i = 0 , len = fields.length; i < len; i++) {
// 對於每個屬性,獲取屬性名
String varName = fields[i].getName();
try {
// 獲取原來的訪問控制許可權
boolean accessFlag = fields[i].isAccessible();
// 修改訪問控制許可權
fields[i].setAccessible(true);
// 獲取在對象f中屬性fields[i]對應的對象中的變數
Object o = fields[i].get(f);
System.out.println("傳入的對象中包含一個如下的變數:" + varName + " = " + o);
// 恢復訪問控制許可權
fields[i].setAccessible(accessFlag);
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
}
}
}
public static void main(String[] args)
{
// 測試代碼用來獲取一個JLabel中聲名的所有的屬性名和其屬性變數
setAllComponentsName(new JLabel("測試"));
}
}