用動作去驅(qū)動未來

          生命在于運動,讓自己身體的每一個細(xì)胞都動起來吧.

           

          2012年11月23日

          List分拆為多少個List對象

          用遞歸實現(xiàn)了這么一個需求,一個list對象中存儲了大量的數(shù)據(jù),所以打算分拆為多個小的list,然后用多線程處理這些list,實現(xiàn)業(yè)務(wù)需求。直接上代碼:

          import java.util.HashMap;
          import java.util.LinkedList;
          import java.util.List;
          import java.util.Map;

          public class TestClass {
              private Map<String,ArrayList<String>> map = new HashMap<String,ArrayList<String>>();
              private int k = 0;

              public
           Map<String,ArrayList<String>> newTableList(ArrayList<String> list,int num) {
                  List
          <String> tempList = new ArrayList<String>();
                  
          int size = list.size();
                  System.out.println(
          "========================================");
                  List
          <String> newList = (List<String>) list.clone();
                  
          for (int i = 0; i < size; i++) {
                      
          if(i < num) {
                          String str 
          = list.get(i);
                          tempList.add(str);
                      } 
          else {
                          
          break;
                      }
                  }
                  
                  
          if (list!=null && size!=0) {
                      k
          ++;
                      map.put(String.valueOf(k), (ArrayList
          <String>) tempList);
                      System.out.println(
          "Key:"+k+",list size:"+tempList.size());
                      System.out.println(
          "========================================");
                      
          for (int i = 0; i < tempList.size(); i++) {
                          String tempStr 
          = tempList.get(i);
                          
          boolean isContains = newList.contains(tempStr);
                          
          if(isContains) {
                              newList.remove(tempStr);
                          }
                      }
                      newTableList((ArrayList
          <String>)newList,num);
                  }
                  
                  
          return map;
              }

          public static void main(String[] args) throws SQLException {
                  TestClass ed = new TestClass();
                  ArrayList<String> tempList = new ArrayList<String>();
                  tempList.add("111");
                  tempList.add("222");
                  tempList.add("333");
                  tempList.add("444");
                  tempList.add("555");
                  tempList.add("666");
                  tempList.add("777");
                  tempList.add("888");
                  tempList.add("999");
                  tempList.add("100");
                  tempList.add("aaa");
                  tempList.add("bbb");
                  tempList.add("ccc");
                  tempList.add("ddd");
                  
                  ed.newTableList(tempList,5);
              }
          }

          希望這段代碼能幫助到些人。

          posted @ 2013-01-30 17:40 黑螞蟻 閱讀(1996) | 評論 (0)編輯 收藏

          java對指定目錄下文件的讀寫

          最近因為項目的國際化的需要,需要對整個項目的100來個插件做國際化,這是一件痛苦的事情,因為純體力勞動。為了省點工作量,想著能不能寫個程序批處理了,減少點工作量,于是就有了下面的代碼。

          1.讀取指定的(.java)文件:
          public static String readFile(String path) throws IOException {
                  File f = new File(path);
                  StringBuffer res = new StringBuffer();
                  String filePathStr = f.getPath();
                  System.out.println("獲取文件的路徑:::::::"+filePathStr);
                  
                  FileInputStream fis = new FileInputStream(f);
                  InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //以gbk編碼打開文本文件
                  BufferedReader br = new BufferedReader(isr, 8192 * 8);
                  
                  String line = null;
                  int linenum = 0;
                  while((line=br.readLine())!=null) {
                      linenum ++;
                      res.append(line+"此處可以添加你自己的字符串處理邏輯"+"\r\n");
                  }
                  br.close();
                  
                  return res.toString();
              }
          2.讀取的文件內(nèi)容信息寫到指定的(.java)文件
          public static boolean writeFile(String cont, String path) {
                  try {
                      File dist = new File(path);
                      OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(dist),"GBK"); 
                      writer.write(cont);
                      writer.flush();
                      writer.close();
                      return true;
                  } catch (IOException e) {
                      e.printStackTrace();
                      return false;
                  }
              }
          3.查找指定目錄下所有符合條件的.java文件,并更新文件信息
              /**
               * 查找文件
               * @param f
               * @throws IOException
               */
              public static void findFile(File f) throws IOException {
                  if(f.exists()) {
                      if(f.isDirectory()) {
                          for(File fs:f.listFiles(ff)) {
                              findFile(fs);
                          }
                      } else {
                              updateFile(f);
                      }
                  }
              }
              
              /**
               * 逐行讀java文件
               * @param f
               * @throws IOException
               */
              private static void updateFile(File f) throws IOException {
                  String filePathStr = f.getPath();
                  System.out.println("開始讀取文件的路徑:::::::"+filePathStr);
                  FileInputStream fis = new FileInputStream(f);
                  InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //以gbk編碼打開文本文件
                  BufferedReader br = new BufferedReader(isr, 8192 * 8);
                  
                  String line = null;
                  int linenum = 0;
                  StringBuffer res = new StringBuffer();
                  while((line=br.readLine())!=null) {
                      String updateStr= updateStr(line);
                      res.append(updateStr+"\r\n");
                      
                      if(!line.trim().equals(updateStr.trim())) {
                          linenum ++;
                      }
                  }
                  br.close();
                  
                  //如果文件有修改,則修改后的文件,覆蓋原有文件
                  if(linenum>0) {
                      System.out.println("=============================");
                      System.out.println("filePathStr:"+filePathStr);
                      System.out.println("文件修改了:"+linenum+"處。");
                      System.out.println("=============================");
                      String cont = res.toString();
                      ReadWriteFile.write(cont, filePathStr);
                  }
              }
              
              /**
               * 驗證讀取的字符串信息
               * 和更新字符串信息
               * @param str
               */
              private static String updateStr(String str) {
                  //判斷字符串是否是需要更新的字符串
                  boolean isok = filterStr(str);
                  int strNum = StringValidation.strNum(str, StringValidation.ch);
                  if(isok || strNum == 0) {
                      return str;
                  } else {
                      String temp = ""; 
                      for(int i=1;i<=strNum/2;i++) {
                          temp += " //$NON-NLS-"+i+"$"; //需要添加的字符
                      }
                      str = str+temp;
                  }
                  return str;
              }
              
              //過濾文件類型
              private static FileFilter ff = new FileFilter() {
                  public boolean accept(File pathname) {
                      String path = pathname.getName().toLowerCase();
                      logger.info("FileFilter path::::"+path);
                      //只匹配 .java 結(jié)尾的文件
                      if (pathname.isDirectory() || path.endsWith(".java")) {
                          return true;
                      }
                      return false;
                  }
              };

              /**
               * 過濾掉不需要處理的字符串
               * @param str
               * @return
               */
              public static boolean filterStr(String str) {
                  boolean isok = false;
                  
                  //過濾字符串
                  isok = (str.indexOf("import ")>=0)
                          || (str.indexOf("package ")>=0)
                          || (str.indexOf(" class ")>=0)
                          || (str.indexOf("http://$NON-NLS")>=0)
                          || (str.indexOf("http://")==0)
                          || (str.indexOf("/*")>=0)
                          || (str.indexOf("*")>=0)
                          || (str.trim().indexOf("@")==0)
                          || (str.indexOf("\"")==-1)
                          || ("".equals(str))
                          || isCh(str);
                  return isok;
              }

              /**
               * 驗證字符串是否含有中文字符
               * @param str
               * @return
               */
              public static boolean isCh(String str) {
                  Pattern   pa   =   Pattern.compile("[\u4E00-\u9FA0]");
                  Matcher   m   =   pa.matcher(str);
                  boolean isok = m.find();
                  return isok;
              }

          總結(jié):當(dāng)我們拿到一個別人給的需求,先不要急于去處理,先分析,再分析,然后做出最優(yōu)的解決方案,處理好這項工作。

          posted @ 2012-11-23 15:32 黑螞蟻| 編輯 收藏

          導(dǎo)航

          統(tǒng)計

          公告

          路在腳下,此刻,出發(fā)。

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 房山区| 綦江县| 子洲县| 迁安市| 北辰区| 韶山市| 四会市| 湟中县| 玉环县| 凤凰县| 调兵山市| 四川省| 永寿县| 黄平县| 南华县| 镇远县| 普定县| 略阳县| 永福县| 和平县| 平潭县| 丹阳市| 武安市| 岐山县| 昌乐县| 岢岚县| 天祝| 博罗县| 莎车县| 洪江市| 科技| 仙游县| 玉屏| 金乡县| 蒙自县| 英超| 班玛县| 安国市| 友谊县| 徐州市| 兰考县|