Java常用小筆記

蚊蚊蚊蚊蚊170624發表於2018-12-07

 

1.對list集合進行分頁

     //startIndex指的是開始的小標 從0開始,pageSize是每頁記錄數
        int toIndex = new Integer(startIndex)+new Integer(pageSize) ;
        List<ProjectWorkItemAssignmentVO> listPage = voList.subList(new Integer(startIndex),toIndex>voList.size() ? voList.size():toIndex);

 

2.Collections對list集合按照指定屬性進行排序

       //時間由新到舊進行排列 就是時間由大到小
            Collections.sort(voList, new Comparator<ProjectWorkItemAssignmentVO>() {
                /**
                 * @param o1
                 * @param o2
                 * @return 返回負數表示:o1 大於o2,
                 * 返回0 表示:o1和o2相等,
                 * 返回正數表示:o1小於o2
                 */
                @Override
                public int compare(ProjectWorkItemAssignmentVO o1, ProjectWorkItemAssignmentVO o2) {
                    if(o1.getsTime().compareTo(o2.getsTime()) == 1){
                        return -1;
                    }

                    if(o1.getsTime().compareTo(o2.getsTime()) == 0){
                        return 0;
                    }
                    return 1;
                }
            });
            System.out.println("排序後voList---" + voList);

      //時間由舊到新進行排列 就是時間由小到大
            Collections.sort(voList, new Comparator<ProjectWorkItemAssignmentVO>() {
                /**
                 * @param o1
                 * @param o2
                 * @return 返回正數表示:o1 大於o2,
                 * 返回0 表示:o1和o2相等,
                 * 返回負數表示:o1小於o2
                 */
                @Override
                public int compare(ProjectWorkItemAssignmentVO o1, ProjectWorkItemAssignmentVO o2) {
                      return o1.geteTime().compareTo(o2.geteTime());
                }
            });


       //完成度由低至高  升序
            Collections.sort(voList, new Comparator<ProjectWorkItemAssignmentVO>() {
                /**
                 * 由低到高排序
                 * @param o1
                 * @param o2
                 * @return 返回負數表示:o1 小於o2,
                 * 返回0 表示:o1和o2相等,
                 * 返回正數表示:o1大於o2
                 */
                @Override
                public int compare(ProjectWorkItemAssignmentVO o1, ProjectWorkItemAssignmentVO o2) {
                    if (o1.getCompletion() > o2.getCompletion()) {
                        return 1;
                    }
                    if (o1.getCompletion() == o2.getCompletion()) {
                        return 0;
                    }
                    return -1;
                }
            });

  對於平常數字的排序,只需要比較大下返回對應的正數或者負數來決定按照什麼順序,對於時間日期,需要呼叫compareTo()方法做比較,具體可以詳看對應的api原始碼

 

3.java獲取指定字串,一個字串中有多個相同的

//擷取0到倒數第三個/位置之間的字串,黃色標註部分
String actionRecord =  "2018-09-08 14:59:42[Start時間]||2018-09-08 15:40:48[Pause時間]||";
//獲取最後一個|的下標
int index = actionRecord.lastIndexOf("|");
//在0-index-1範圍內,查詢最後一個匹配的的字串的位置
index = actionRecord.lastIndexOf("|",index-1);
//在0-index-1範圍內,查詢最後一個匹配的字串的位置
index = actionRecord.lastIndexOf("|",index-1);
//擷取兩者之間的字串
String temp = actionRecord.substring(0,index+1);

  參考連線: https://www.cnblogs.com/dujinyang/p/4788028.html

 

4.判斷一個時間段是否與另一個時間段重合

//判斷時間段time1~time2是否與時間段fromTime~toTime重合
if(time1 >= fromTime && time1 < toTime || fromTime >= time1 && fromTime < time2){
   //重合
}

 

5.使用set對list集合去重

//利用set 對list去重複
Set<SPCustomer> set = new HashSet<SPCustomer>(tempList);
//使用去重複後的set 重新構建一個list
List<SPCustomer> tempList2 = new ArrayList<SPCustomer>(set);

 

相關文章