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 中属于模型层