A. java 的haspmap中若使用string數組做鍵值,hashcode該怎麼改寫,在哪裡改寫
用object 做 hashmap 的key ,需要重寫這個object 的hashCode 和 equals 方法
如果你用string數組的話 ,你可以以寫一個小的類,包裝一下string數組,然後實現這個類的hashCode 和 equals 方法
具體 hashCode 返回什麼值合適,要看你的string數組,hashCode返回的值最好能夠最大限度的區分你的string數組
例子
class StringArrayWrapper{
String keyString;
public StringArrayWrapper(String[] ss){
keyString=ss[0];
}
public int hashCode(){
return keyString.length();
}
public boolean equals(Object o){
return (o instanceof StringArrayWrapper) && (keyString.length()==((StringArrayWrapper)o).hashCode());
}
}
B. java如果有特定的鍵值對 希望以鍵名為數組下標 鍵值為數組的值 怎麼來循環呢
沒具體明白你的意思。根據我的理解就是:你知道了數據下標和下標對應的值,並且這些都是放在Map中,然後你想利用循環,來獲取完整的數組。下面是根據我的理解的一個小實例
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Set;
publicclassTest{
publicstaticvoidmain(String[]args){
Map<String,Object>map=newHashMap<String,Object>();
map.put("0","製造假數據");
map.put("1","下面是一個小示例");
map.put("2","存放數組下標和數值");
map.put("3","下面開始循環");
String[]arr=newString[map.size()];
Set<String>set=map.keySet();
for(Stringst:set){
arr[Integer.parseInt(st)]=(String)map.get(st);
}
for(inti=0;i<arr.length;i++){
System.out.println("arr["+i+"]:"+arr[i]);
}
}
}
C. Java中數組也算鍵值對嗎
是的java除了8種基礎類型外,其餘都是類,數組也是一種特殊的類,System.out.println(bText.getClass().getName());不算鍵值對
D. java使用方法改變數組的值
package com.vortex.test.type;
public class ArrayUtil<E> {
/**
*
* @param arr 需要改變的數組
* @param index 需要改變的下標
* @param newValue 新的值
* E 泛型: 數組對象類型:例如 String、Integer或者自定義對象類型
* @return
*/
public E[] chageValue(E[] arr,int index,E newValue){
try{
arr[index] = newValue;
}catch(Exception e){
System.out.println(e.getMessage());
}
return arr;
}
public static void main(String[] args) {
ArrayUtil<String> au = new ArrayUtil<String>();
String[] arr = {"1","2","3","4"};
System.out.println("修改前");
for(int i=0;i<arr.length;i++){
String val = arr[i];
System.out.println("第"+i+"個元素 為"+val);
}
arr = au.chageValue(arr, 0, "100");
System.out.println("修改後");
for(int i=0;i<arr.length;i++){
String val = arr[i];
System.out.println("第"+i+"個元素 為"+val);
}
ArrayUtil<User> user_au = new ArrayUtil<User>();
User[] user_arr = {new User("張三",22),new User("李四",23),new User("王五",21)};
System.out.println("修改前");
for(int i=0;i<user_arr.length;i++){
User u = user_arr[i];
System.out.println("第"+i+"個元素 name="+u.getName()+" age="+u.getAge());
}
user_arr = user_au.chageValue(user_arr, 0, new User("趙六",25));
System.out.println("修改後");
for(int i=0;i<user_arr.length;i++){
User u = user_arr[i];
System.out.println("第"+i+"個元素 name="+u.getName()+" age="+u.getAge());
}
}
}
class User{
private String name;
private int age;
public User(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
E. java 怎樣 改變 數組元素的值
1、首先你要確定數組的類型(比如 整型數組、字元串數組、位元組數組等類型)
2、其次你要能訪問到數組元素,即:明確訪問數組 元素的方法。
3、按照1和2中確認的類型和方法來對數組元素的值進行修改
例如:
int[] a={1,2,3,4,5,6}; //該數組類型為一維的整型數組,數組元素的類型都為整數類型
針對 該數組,訪問該一維數組可以通過下標的方法:a[i] ,i為數組元素的下標(i=0 表示數組的第1個元素,依次類推),如果要修改該數組的第3元素的值為 30 ,那麼i=2,可以通過 a[2]=30; 這個語句實現。
F. Java定義一個一維數組,並給每個元素賦值為數組下標的值,並顯示
publicstaticvoidmain(String[]args){
/**
*1、Java定義一個一維數組,並給每個元素賦值為數組下標的值,並顯示
*/
int[]arr=newint[10];
for(inti=0;i<arr.length;i++){
arr[i]=i;
System.out.println(i+","+arr[i]);
}
}
publicstaticvoidmain(String[]args){
/**
*2、修改上述程序,將數組的賦值改為從鍵盤上輸入的10個整數
*/
int[]arr=newint[10];
System.out.println("請依次輸入10個整數");
for(inti=0;i<arr.length;i++){
System.out.println("請輸入第"+(i+1)+"個整數:");
Scannerinput=newScanner(System.in);
arr[i]=Integer.parseInt(input.nextLine());
}
for(inti=0;i<arr.length;i++){
System.out.println(i+","+arr[i]);
}
/**
*3、修改上述程序,添加代碼,實現從10個數中找到最大值和最小值,並顯示。
*/
intmax=arr[0];//將數組的第一個元素賦給max
intmin=arr[0];//將數組的第一個元素賦給min
for(inti=1;i<arr.length;i++){
//從數組的第二個元素開始賦值,依次比較
if(arr[i]>max){
//如果arr[i]大於最大值,就將arr[i]賦給最大值
max=arr[i];
}
if(arr[i]<min){
//如果arr[i]小於最小值,就將arr[i]賦給最小值
min=arr[i];
}
}
System.out.println("最大值是:"+max);
System.out.println("最小值是:"+min);
/**
*4、修改上述程序,添加代碼,去掉最大值和最小值,然後計算剩下的數的平均值,並顯示
*/
intsum=0;
for(inti=0;i<arr.length;i++){
sum+=arr[i];
}
sum=sum-max-min;//去掉最大值和最小值的總和
doubleaverage=sum/(arr.length-2);
System.out.println("平均值:"+average);
}
G. java中如何map轉換為數組
map.put("123",newfloat[]{11,11,11});
按照已有的代碼,存進去的時候,new一個float數組,直接傳值就可以。
或
Map sMap = new HashMap<String[], String>();
String[] strs = {"1","2"};
sMap.put(strs, "map的鍵值可以為數組");
System.out.println(sMap.get(strs));//---->map的鍵值可以為數組。
(7)java數組鍵值擴展閱讀:
一個數組中的所有元素具有相同的數據類型(在C、C++、Java、pascal中都這樣。但也並非所有涉及數組的地方都這樣,比如在Visual Foxpro中的數組就並沒這樣的要求)。當然,當數據類型為 Variant 時,各個元素能夠包含不同種類的數據(對象、字元串、數值等等)。可以聲明任何基本數據類型的數組,包括用戶自定義類型和對象變數。
H. 【java】求助怎麼把一個數組元素隨機打亂順序,謝謝~~~
暈.不用那麼麻煩.
先轉化為list(為什麼不一開始就用List呢?)
例:
String[] arr = new String[] {"1", "2"};
List list = Arrays.asList(arr);
直接調用shuffle,就是隨機排序
例:Collections.shuffle(list);
直接輸出就是你想要的結果
I. java map的鍵可以是數組嗎
可以。
MapsMap=newHashMap<String[],String>();
String[]strs={"1","2"};
sMap.put(strs,"map的鍵值可以為數組");
System.out.println(sMap.get(strs));//---->map的鍵值可以為數組
J. 請問java鍵值對存在的數組,遍歷後怎麼保存全部遍歷的信息
1.面向對象的思想,所以你看能否抽象為一個類,顯然這里這個快遞信息是可以的,
所以可以建立一個Message類,提供 private Date time ; 和 private String context; 等成員變數;
然後提供get 和 set方法;這也是封裝 ,抽象 的表現。
2.要使用的時候可以List<Message> list= new ArrayList<Message>();來封裝多條信息
3.而且這樣的類在MVC 中屬於模型層