首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java新手提问:怎么利用泛型实现一个一维数组操作类,可加入任意类型的数据

2013-07-20 
java新手提问:如何利用泛型实现一个一维数组操作类,可加入任意类型的数据。看《java开发实战经典》这本书,泛

java新手提问:如何利用泛型实现一个一维数组操作类,可加入任意类型的数据。
看《java开发实战经典》这本书,泛型那章的习题:
按照要求定义一个操作类:要求完成一个一维数组操作类,其中可以加入任意类型的数据,数组具体的操作类型由程序外部决定,并且可以实现查询功能。

刚开始学编程,有点头大,哪位能指点指点,多谢多谢!
[解决办法]
泛型里面写Object类不就可以了

[解决办法]
参数或者类属性使用object,然后外部使用强制转换?
[解决办法]
Object数组,然后根据枚举,判断存储的类型进行强转。
[解决办法]
定义一个参数类型不就行了。
[解决办法]
不会,帮顶。

关注.
[解决办法]


public <T> List<T> arrayOperation(String param)
    {
        List<T> arr = new ArrayList<T>();
        .......
    }

方法加泛型,调用时指定泛型类型,如
List<Integer> arr = xxClass.arrayOperation("xxxx");
List<String> arr = xxClass.arrayOperation("xxxx");
[解决办法]
看看ArrayList的源码
[解决办法]
仅供参考:


public class TestArray<T>//define a class generic
{
private T[] arrayT1;

public TestArray()
{
arrayT1 = null;
}
public TestArray(T[] arrayT1)
{
this.arrayT1 = arrayT1;
}
public T[] getFirst()
{
return arrayT1;
}
public void setFirst(T[] newValue1)
{
this.arrayT1=newValue1;
}
//数组长度。
public int size(){
if(null == arrayT1){//数组未定义,返回负值。
return -1;
}
return arrayT1.length;
}

//取出数组给定下标的值。
public T getT_fromArrayT1(int k){
if(null == arrayT1 
------解决方案--------------------


 k<0 
[解决办法]
 k >= arrayT1.length){
System.out.println("数组未定义或给定值超出范围!");
return null;
}
return arrayT1[k];
}

/**
 * main method
 */
public static void main(String[] args){
//定义两个不同数组。
String[] strArray = {"123","456","789"};
Integer[] intArray = {100,200,333};
//用字符串数组
TestArray<String> t1 = new TestArray<String>();
t1.setFirst(strArray);
//用Integer 型
TestArray<Integer> t2 = new TestArray<Integer>();
t2.setFirst(intArray);

for(int i = 0; i<t1.size(); i++){
System.out.println("t1["+i+"] = "+ t1.getT_fromArrayT1(i));
}
for(int i = 0; i<t2.size(); i++){
System.out.println("t2["+i+"] = "+ t2.getT_fromArrayT1(i));
}
}
}


[解决办法]
你那些红花是哪里得来的?? java新手提问:怎么利用泛型实现一个一维数组操作类,可加入任意类型的数据

看看14L的代码吧 
[解决办法]
题目明明说的是一维数组操作类啊,也就是说类方法的参数是一维数组

public class TestEnum<T> {

  public void printTs(T[] ts) {
    if (ts == null 
[解决办法]
 ts.length == 0) {
      return;
    }
    for (T t : ts) {
      System.out.println(t);
    }
  }

}

[解决办法]

if(array[i]==key){
                flag=true;
                temp=i;
            }
改成

if(array[i].equals(key)){
                flag=true;
                temp=i;
            }

[解决办法]



import java.util.Arrays;
import java.util.Collection;

/**
 * Generic array.
 */
public class MyArray<E> {
  
  @SuppressWarnings("unchecked")
  private final E[] arr;
  
  public MyArray(int size) {
    
    if( size < 0 )
      throw new IllegalArgumentException("Invalid array size: " + size);
    
    arr = (E[])new Object[size];
  }
  
  public MyArray(Collection<E> col) {
    
    this(col.size()); // throws NullPointerException if col == null
    
    int index = 0;
    for(E element : col)
      arr[index++] = element;
  }
  
  public int length() {
    
    return arr.length;
  }
  
  public E get(int index) {
    
    return arr[index]; // potentially throws ArrayIndexOutOfBoundsException
  }
  
  public void set(int index, E value) {
    
    arr[index] = value; // potentially throws ArrayIndexOutOfBoundsException
  }
  
  public int indexOf(E value) { // (search)
    
    for(int i=0; i<arr.length; i++) {
      
      E element = arr[i];
      if( element == value )
        return i;
      if( element != null && element.equals(value) )
        return i;
    }
    return -1;
  }
  
  public static void main(String[] args) {
    
    MyArray<String> arr1 = new MyArray<String>(


            Arrays.asList("abc", "def", "ghi", "jkl"));
    
    String search1 = "ghi";
    System.out.println("Index of " + search1 + " is : " + arr1.indexOf(search1));
    
    MyArray<Integer> arr2 = new MyArray<Integer>(Arrays.asList(4, 5, 6, 7, 8));
    
    Integer search2 = 6;
    System.out.println("Index of " + search2 + " is : " + arr2.indexOf(search2));
  }
}


[解决办法]
java新手提问:怎么利用泛型实现一个一维数组操作类,可加入任意类型的数据如果你不想妹子都写这样的数组转换  你可以自己写个封装的类去做 每次去调用这个类里面的方法

public class IntegerUtil {
public static Integer[] change(int[] a){
Integer[] inter = new Integer[a.length];
for(int i=0;i<a.length;i++){
inter[i]= new Integer(a[i]);
}
return inter;

}

然后想要调用的时候就

int str2[]={4,5,6,7,8};
    Integer[] in = IntegerUtil.change(str2);
    for(Integer i : in){
    System.out.println(i);
    }

[解决办法]
@SuppressWarnings("unchecked")
public MyArray(int size) {

热点排行