Java实现

1、Java字符串包含字符个数的实现方法:

public static void main(String[] args) {
String str = “100000-0011-0019”;
int p = str.indexOf(“-”);
int n = 0;
while (p != -1) {
++n;
p = str.indexOf(“-”, p + “-”.length());
}
System.out.println(n);
}

2、截取字符串

StringUtils.substring()

String substring(String str,int start):避免异常地从指定的String获取一个子字符串。

String substring(String str,int start, int end):可避免异常地从指定的String获取一个子字符串。

String substringAfter(String str,String separator):在第一次出现分隔符后获取子字符串。

String substringAfterLast(String str,String separator):在最后一次出现分隔符之后获取子字符串。

String substringBefore(String str,String separator):在第一次出现分隔符之前获取子字符串。

String substringBeforeLast(String str,String separator):在最后一次出现分隔符之前获取子字符串。

String substringBetween(String str,String tag):获取嵌套在同一String的两个实例之间的String。

String substringBetween(String str, String open, String close):获取嵌套在两个字符串之间的字符串。

3、手动分页

public static <T> PageInfo<T> list2PageInfo(List<T> arrayList, Integer pageNum, Integer pageSize) {
    //实现list分页
    //PageHelper.startPage(pageNum, pageSize);
    int pageStart = pageNum == 1 ? 0 : (pageNum - 1) * pageSize;
    int pageEnd = arrayList.size() < pageSize * pageNum ? arrayList.size() : pageSize * pageNum;
    List<T> pageResult = new LinkedList<T>();
    if (arrayList.size() > pageStart) {
        pageResult = arrayList.subList(pageStart, pageEnd);
    }
    PageInfo<T> pageInfo = new PageInfo<T>(pageResult);
    //获取PageInfo其他参数
    pageInfo.setTotal(arrayList.size());
    int endRow = pageInfo.getEndRow() == 0 ? 0 : (pageNum - 1) * pageSize + pageInfo.getEndRow() + 1;
    pageInfo.setEndRow(endRow);
    boolean hasNextPage = arrayList.size() <= pageSize * pageNum ? false : true;
    pageInfo.setHasNextPage(hasNextPage);
    boolean hasPreviousPage = pageNum == 1 ? false : true;
    pageInfo.setHasPreviousPage(hasPreviousPage);
    boolean isLastPage = (arrayList.size() > pageSize * (pageNum - 1) && arrayList.size() <= pageSize * pageNum) ?
        true : false;
    int pages = arrayList.size() % pageSize == 0 ? arrayList.size() / pageSize : (arrayList.size() / pageSize) + 1;
    pageInfo.setNavigateLastPage(pages);
    int[] navigatePageNums = new int[pages];
    for (int i = 1; i < pages; i++) {
        navigatePageNums[i - 1] = i;
    }
    int nextPage = pageNum < pages ? pageNum + 1 : 0;
    pageInfo.setNextPage(nextPage);
    pageInfo.setPageNum(pageNum);
    pageInfo.setPageSize(pageSize);
    pageInfo.setPages(pages);
    pageInfo.setPrePage(pageNum - 1);
    pageInfo.setSize(pageInfo.getList()
        .size());
    int starRow = arrayList.size() < pageSize * pageNum ? 1 + pageSize * (pageNum - 1) : 0;
    pageInfo.setStartRow(starRow);
    return pageInfo;
}

4、List分割

例如list有100条数据,则可按照如下方法分割为50一个list

List<CustomerClueDo> a = new ArrayList<>();
        List<List<>> partition = Lists.partition(a, 50);
        partition.forEach(input ->{
      System.out.println(input);
})

5、List 去重 java8新特性

public static void main(String[] args) {
        ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
        System.out.println(numbersList);
        List<Integer> listWithoutDuplicates = numbersList.stream().distinct().collect(Collectors.toList());
        System.out.println(listWithoutDuplicates);
    }

6、List倒序排列

 List<Integer> list = Arrays.asList(10,1,91,4,8,7,9,3,2,92);
        Collections.reverse(list); //倒序排列 
        System.out.println(list);
        结果:[92, 2, 3, 9, 7, 8, 4, 91, 1, 10]
//        Collections.sort(list); //升序排列
        System.out.println(list);
        结果:[1, 2, 3, 4, 7, 8, 9, 10, 91, 92]

7、获取时间差(跟当前时间差多少天多少分多少秒)

  public static String timeDiff(Date createTime) {
      long timeDiff = new Date().getTime() - createTime.getTime();
      double daysRound = Math.floor(timeDiff / 1000 / 60 / 60 / 24);
      double hoursRound = Math.floor(timeDiff / 1000 / 60 / 60 - 24 * daysRound);
      double minuteRound = Math.floor(timeDiff / 1000 / 60 - 24 * 60 * daysRound - 60 * hoursRound);
      return String.format("%.0f", daysRound) + "天" + String.format("%.0f", hoursRound) + "时" + String.format("%.0f", minuteRound) + "分";
  }

8、List使用StreamAPI排序

这种方式利用Stream API中的sorted()方法,通过Comparator.comparing()指定排序的字段(例如age),并使用collect()方法将排序后的元素收集到一个新的列表中,如果加了.reversed()则是倒序排列,不加则升序
@Data
public class User {
    String name;
    String age;
}
public static void main(String[] args) throws ParseException {
        User user = new User();
        user.setName("张三");
        user.setAge("12");
        User user1 = new User();
        user1.setName("李四");
        user1.setAge("13");
        User user2 = new User();
        user2.setName("王五");
        user2.setAge("14");
        List<User> list = new ArrayList<>();
        list.add(user1);
        list.add(user);
        list.add(user2);
        System.out.println(list);
        List a =  list.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());
        System.out.println(a);
    }
 输出结果:
 [User(name=李四, age=13), User(name=张三, age=12), User(name=王五, age=14)]
 [User(name=王五, age=14), User(name=李四, age=13), User(name=张三, age=12)]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值