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)]