在单例模式下,编写一些实用的数组集合间的转换方法

来源:互联网 发布:tv直播软件 编辑:程序博客网 时间:2024/05/16 05:24

根据我工作以来总结的经验,在工作中可能用到的数组、集合间的转换知识,我决定写一个单例类封装了很多关于数组、集合相互转换的方法,希望能帮到大家。

                                                                                                                                               By 何泽江 (凯捷国际)

 

package org.集合数组的操作转换;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;

public class SingletonInstance {

 /**
  * @declaration 在单例模式下,测试一些JAVA技术细节
  * @author 何泽江
  */
 private static SingletonInstance instance = null ;
 
 private SingletonInstance(){
  
 }
 
 public static SingletonInstance getSingletonInstance(){
  if(instance == null)
   instance = new SingletonInstance();
  return instance;
 }
 
 void testSwitchSentance1(int i){
  switch(i){
  case 1 :
   System.out.println("1");
   break;
  case 2 :
   System.out.println("2");
   break;
  case 3 :
   System.out.println("3");
   break;
  default :  
   System.out.println("default");
  }
 }
 
 void testSwitchSentance2(int i){
  switch(i){
  case 1 :
   System.out.println("1");
  case 2 :
   System.out.println("2");
  case 3 :
   System.out.println("3");
  default :  
   System.out.println("default");
  }
 }
 
 /**
  * 测试下ArrayList LinkedList插入和查找的效率
  * @author hezejiang
  */
 void testListRatio(){
  long time1 = System.currentTimeMillis();
  List arrayList = new ArrayList();
  for(int j=0;j<1000000;j++){
   arrayList.add(j);
  }
  System.out.println("arrayList :"+arrayList.size());
  System.out.println("arrayListcosttime: "+(System.currentTimeMillis() - time1));
  long time2 = System.currentTimeMillis();
  List linkedList = new LinkedList();
  for(int i=0;i<1000000;i++){
   linkedList.add(i);
  }
  System.out.println("linkedList :"+linkedList.size());
  System.out.println("linkedListcosttime: "+(System.currentTimeMillis() - time2));
  
  
 }
 
 /**
  * 数组定义规范化及其效率测试相关
  * @author hezejiang
  */
 void testArrayRatio(){
  int[] array1 = new int[9];
  for(int i = 0; i<array1.length;i++){
   array1[i] = i;
   System.out.println("array1["+i+"]: "+array1[i]);
  }
  
  int[] array2 = {1,2,3,4,5,6,7,2};
  for(int i = 0; i<array2.length;i++){
   System.out.println("array2["+i+"]: "+array2[i]);
  }
  
  for(int i = 0; i<array2.length;i++){
   for(int j = array2.length - 1; j>=0; j--){
    if(array2[i] == array2[j]){
     System.out.print("重复的数是"+array2[i]+"下表为"+i);
    }
   }
  }
  
 }
 
 /**
  * 去除vector中重复元素
  * @author hezejiang
  */
 void delDupElement(){
  Vector vector = new Vector();
  vector.add("A1");
  vector.add("B1");
  vector.add("A2");
  vector.add("B2");
  vector.add("C");
  vector.add("C");
  System.out.println("vector: "+ vector);
  //1利用HashSet的元素不重复性,将其强转成HashSet
//  HashSet vecSet = new HashSet(vector);
//  Iterator iter = vecSet.iterator();
//  while(iter.hasNext()) {
//   String str = (String) iter.next();
//   System.out.println("str: "+ str);
//  }
//  System.out.println("vecSet: " + vecSet);
  //2利用俩个vector,如果新的vector里不包含旧vector的元素,则将该元素add进去
  Vector vectorNew = new Vector();
  for(int i=0; i<vector.size(); i++){
   Object obj = vector.get(i);
   if(! vectorNew.contains(obj)){
    vectorNew.add(obj);
   }
   System.out.println("vectorNew:["+i+"]"+vectorNew.get(i));
  }
  System.out.println("vectorNew: "+vectorNew);
 }
 
 /**
  *  冒泡排序
  *  @param flag
  *  @param arrayInt
  *  @declaration flag为0 从大到小排序
  *      flag为1 从小到大排序
  *       arrayInt要排序的数组
  *  @author <href mailto:843404841@qq.com>何泽江</href>
  */
 static void  bubborSort(String flag, int[] arrayInt) {
  if (String.valueOf("0").equals(flag)) {
   System.out.println("数组从大到小排序");
   for (int i = 0; i < arrayInt.length - 1; i++) {// 从数组第一个元素到倒数第二个元素
    for (int j = i + 1; j < arrayInt.length; j++) {// 从数组的第二个元素到最后一个元素
     int temp;
     if (arrayInt[i] < arrayInt[j]) {
      temp = arrayInt[i];
      arrayInt[i] = arrayInt[j];
      arrayInt[j] = temp;
     }
    }
   }
   for (int i = 0; i < arrayInt.length; i++) {
    System.out.println("arrayInt[" + i + "] " + arrayInt[i]);
   }
  } else if(String.valueOf("1").equals(flag)){
   System.out.println("数组从小到大排序");
   for (int i = 0; i < arrayInt.length - 1; i++) {// 从数组第一个元素到倒数第二个元素
    for (int j = i + 1; j < arrayInt.length; j++) {// 从数组的第二个元素到最后一个元素
     int temp;
     if (arrayInt[i] > arrayInt[j]) {
      temp = arrayInt[i];
      arrayInt[i] = arrayInt[j];
      arrayInt[j] = temp;
     }
    }
   }
   for (int i = 0; i < arrayInt.length; i++) {
    System.out.println("arrayInt[" + i + "] " + arrayInt[i]);
   }
  }else{
   System.out.println("传人flag标志错误!");
  }
 }
 
 /**
  * translation between List && Array
  * @return list or array
  * @author hzj
  * @param <Sting>
  */
 
 protected  void listAndArrayTrans(List list){
  
  System.out.println("转换qian的list " + list);
  final int size = list.size();
  /***将LIST转换为ARRAY***/
  String[] strArray = (String[])list.toArray(new String[size]);
  for(int i=0; i<strArray.length; i++){
   System.out.println("strArray[" + i + "] " + strArray[i]);
  }
  /***将ARRAY转换为LIST***/
  list = Arrays.asList(strArray);
  System.out.println("转换后的LIST " + list);
  /**
   *  附送数组的N种正确声明方式
   * int intArr[] = new int[1];
   * int[] intArr1 = new int[2];
   * int[] intArr2 = {1,2,3,3};
   */
 }
 
 /**
  * 利用readline读取一个文件的给定行数
  * @author hzj
  * @date 2013-5-13
  */
 
 void testReadLine(File file, int m, int n){
  
  try{
         InputStreamReader read = new InputStreamReader(
            new FileInputStream(file),"UTF-8");//考虑到编码格式
            BufferedReader bufferedReader = new BufferedReader(read);
            int i=0;
            String lineTxt= "";
            while((lineTxt = bufferedReader.readLine())!=null){
             i+=1;
             if(i>=m&&i<=n){
              //读入到文件中
              System.out.println(lineTxt);
             }
            }
 }catch(IOException e){ 
 }
 }
 
 /**
  * 利用二分法实现数组的逆序输出
  * @author hzj
  * @date 2013-5-14
  */
 
 void reverseArray(int[] arr){
  
  System.out.println("要排序的数组为:" + Arrays.toString(arr));
  int len = arr.length;
  for(int i=0; i<len/2; i++){
   int temp;
   temp = arr[i];
   arr[i] = arr[len-1-i];
   arr[len-1-i] = temp;
  }
  
  System.out.println("逆序输出的数组为:" + Arrays.toString(arr));
  //Arrays.sort()方法是按元素大小顺序输出
 }
  
}