亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JAVA語言的常用操作

發布時間:2021-09-04 23:10:36 來源:億速云 閱讀:133 作者:chen 欄目:互聯網科技

本篇內容主要講解“JAVA語言的常用操作”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“JAVA語言的常用操作”吧!

求和 最大最小 平均值  分組  去重

list.stream().mapToDouble(User::getHeight).sum()//和
list.stream().mapToDouble(User::getHeight).max()//最大
list.stream().mapToDouble(User::getHeight).min()//最小
list.stream().mapToDouble(User::getHeight).average()//平均值


//List 以ID分組 Map<Integer,List<Apple>>
Map<Integer, List<Apple>> groupBy = appleList.stream().collect(Collectors.groupingBy(Apple::getId));
 
System.err.println("groupBy:"+groupBy);
{1=[Apple{id=1, name='蘋果1', money=3.25, num=10}, Apple{id=1, name='蘋果2', money=1.35, num=20}], 2=[Apple{id=2, name='香蕉', money=2.89, num=30}], 3=[Apple{id=3, name='荔枝', money=9.99, num=40}]}

import static java.util.Comparator.comparingLong;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection;
 
// 根據id去重
     List<Person> unique = appleList.stream().collect(
                collectingAndThen(
                        toCollection(() -> new TreeSet<>(comparingLong(Apple::getId))), ArrayList::new)
        );

SpringBoot-讀取classpath下文件

// 方法1:獲取文件或流
this.getClass().getResource("/")+fileName;
this.getClass().getResourceAsStream(failName);
// 方法2:獲取文件
File file = org.springframework.util.ResourceUtils.getFile("classpath:test.txt");
// 方法3:獲取文件或流
ClassPathResource classPathResource = new ClassPathResource("test.txt");
classPathResource .getFile();
classPathResource .getInputStream();

// >>>>>>>>>>>>>>>> 下面方法可以讀取jar包下文件
假設resources目錄下有一個test.txt文件,首先獲得當前的類加載器,通過類加載器讀取文件。

// 方法1
InputStream io = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.txt");
// 方法2
InputStream io = getClass().getClassLoader().getResourceAsStream("test.txt");
————————————————
版權聲明:本文為CSDN博主「東京易冷」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_38229356/article/details/80783142


SpringBoot 項目將項目打包成jar包,使用ClassPathResource時使用的是絕對路徑,直接調用getFile()方法會報FileNotFoundException

val resource = ClassPathResource("my.keystore")
val temp = Files.createTempFile("my.keystore", "tmp")
Files.copy(resource.inputStream, temp, StandardCopyOption.REPLACE_EXISTING)
————————————————
版權聲明:本文為CSDN博主「bannerXu」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_31724483/article/details/89291739

bean validation 常用的注解 (https://www.cnblogs.com/mr-yang-localhost/p/7812038.html)

 Bean Validation 中內置的 constraint     
@Null   被注釋的元素必須為 null     
@NotNull    被注釋的元素必須不為 null     
@AssertTrue     被注釋的元素必須為 true     
@AssertFalse    被注釋的元素必須為 false     
@Min(value)     被注釋的元素必須是一個數字,其值必須大于等于指定的最小值     
@Max(value)     被注釋的元素必須是一個數字,其值必須小于等于指定的最大值     
@DecimalMin(value)  被注釋的元素必須是一個數字,其值必須大于等于指定的最小值     
@DecimalMax(value)  被注釋的元素必須是一個數字,其值必須小于等于指定的最大值     
@Size(max=, min=)   被注釋的元素的大小必須在指定的范圍內     
@Digits (integer, fraction)     被注釋的元素必須是一個數字,其值必須在可接受的范圍內     
@Past   被注釋的元素必須是一個過去的日期     
@Future     被注釋的元素必須是一個將來的日期     
@Pattern(regex=,flag=)  被注釋的元素必須符合指定的正則表達式     
Hibernate Validator 附加的 constraint     
@NotBlank(message =)   驗證字符串非null,且長度必須大于0     
@Email  被注釋的元素必須是電子郵箱地址     
@Length(min=,max=)  被注釋的字符串的大小必須在指定的范圍內     
@NotEmpty   被注釋的字符串的必須非空     
@Range(min=,max=,message=)  被注釋的元素必須在合適的范圍內

bigDecimal轉字符串的三種表示方式:

本文介紹BigDecimal的3個toString方法的區別。

BigDecimal類有3個toString方法,分別是toEngineeringString、toPlainString和toString,

從BigDecimal的注釋中可以看到這3個方法的區別:

toEngineeringString:有必要時使用工程計數法。工程記數法是一種工程計算中經常使用的記錄數字的方法,與科學技術法類似,但要求10的冪必須是3的倍數

toPlainString:不使用任何指數

toString:有必要時使用科學計數法

 不使用指數科學記數法工程記數法
27002.7 × 1032.7 × 103
270002.7 × 10?27 × 103
2700002.7 × 10?270 × 103
27000002.7 × 10?2.7 × 10?
import java.math.BigDecimal;

public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal bg = new BigDecimal("1E11");
        System.out.println(bg.toEngineeringString());
        System.out.println(bg.toPlainString());
        System.out.println(bg.toString());
    }
}
 
//輸出
100E+9
100000000000
1E+11

計算兩個LocalDateTime類型之間的相差天數使用方法為:

最開始使用Period.between()方法計算,只能計算相同月份的相差天數:

//只能計算相同月之間相隔的天數
int daysNum = Period.between(O.getStartTime().toLocalDate(), O.getEndTime().toLocalDate()).getDays();

優化后使用toEpochDay()方法為:

int daysNum=(int)(o.getEndTime().toLocalDate().toEpochDay() - o.getStartTime().toLocalDate().toEpochDay());

日期轉換:

//java.util.Date --> java.time.LocalDateTime
public void UDateToLocalDateTime() {
    java.util.Date date = new java.util.Date();
    Instant instant = date.toInstant();
    ZoneId zone = ZoneId.systemDefault();
    LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
}

// 02. java.util.Date --> java.time.LocalDate
public void UDateToLocalDate() {
    java.util.Date date = new java.util.Date();
    Instant instant = date.toInstant();
    ZoneId zone = ZoneId.systemDefault();
    LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
    LocalDate localDate = localDateTime.toLocalDate();
}

// 03. java.util.Date --> java.time.LocalTime
public void UDateToLocalTime() {
    java.util.Date date = new java.util.Date();
    Instant instant = date.toInstant();
    ZoneId zone = ZoneId.systemDefault();
    LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
    LocalTime localTime = localDateTime.toLocalTime();
}


// 04. java.time.LocalDateTime --> java.util.Date
public void LocalDateTimeToUdate() {
    LocalDateTime localDateTime = LocalDateTime.now();
    ZoneId zone = ZoneId.systemDefault();
    Instant instant = localDateTime.atZone(zone).toInstant();
    java.util.Date date = Date.from(instant);
}


// 05. java.time.LocalDate --> java.util.Date
public void LocalDateToUdate() {
    LocalDate localDate = LocalDate.now();
    ZoneId zone = ZoneId.systemDefault();
    Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
    java.util.Date date = Date.from(instant);
}

// 06. java.time.LocalTime --> java.util.Date
public void LocalTimeToUdate() {
    LocalTime localTime = LocalTime.now();
    LocalDate localDate = LocalDate.now();
    LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
    ZoneId zone = ZoneId.systemDefault();
    Instant instant = localDateTime.atZone(zone).toInstant();
    java.util.Date date = Date.from(instant);
}

對象列表按屬性分組:

//List 以ID分組 Map<Integer,List<Apple>>
Map<Integer, List<Apple>> groupBy = appleList.stream().collect(Collectors.groupingBy(Apple::getId));

List轉Map:

/**
 * List -> Map
 * 需要注意的是:
 * toMap 如果集合對象有重復的key,會報錯Duplicate key ....
 *  apple1,apple12的id都為1。
 *  可以用 (k1,k2)->k1 來設置,如果有重復的key,則保留key1,舍棄key2
 */
Map<Integer, Apple> appleMap = appleList.stream().collect(Collectors.toMap(Apple::getId, a -> a,(k1,k2)->k1));

過濾:

List<Apple> filterList = appleList.stream().filter(a -> a.getName().equals("香蕉")).collect(Collectors.toList());

求和:

BigDecimal totalMoney = appleList.stream().map(Apple::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);

查找流中最大 最小值

Collectors.maxBy 和 Collectors.minBy 來計算流中的最大或最小值。

Optional<Dish> maxDish = Dish.menu.stream().
      collect(Collectors.maxBy(Comparator.comparing(Dish::getCalories)));
maxDish.ifPresent(System.out::println);
 
Optional<Dish> minDish = Dish.menu.stream().
      collect(Collectors.minBy(Comparator.comparing(Dish::getCalories)));
minDish.ifPresent(System.out::println);

去重

List<Person> unique = appleList.stream().collect(
                collectingAndThen(
                        toCollection(() -> new TreeSet<>(comparingLong(Apple::getId))), ArrayList::new)
        );

數組轉List

使用Stream中的Collector收集器

String[] arrays = new String[]{"a", "b", "c"};
List<String> listStrings = Stream.of(arrays).collector(Collectors.toList());

使用java.util.Arrays工具類中的asList()方法(這個不是Java8中新增的內容):

String[] arrays = new String[]{"a", "b", "c"};
List<String> listStrings = Arrays.asList(arrays);

轉換List為數組

使用Stream:

String[] ss = listStrings.stream().toArray(String[]::new);

使用List中的toArray()方法

String[] sss = listStrings.toArray(new String[listStrings.size()]);

獲取本機內網地址:

/** 本機IP 列表 */
public static List<String> getLocalIps() {
    List<String> ips = new ArrayList<String>();
    try {
        Enumeration<NetworkInterface> enumeration = NetworkInterface.getNetworkInterfaces();
        while (enumeration.hasMoreElements()) {
            NetworkInterface iface = enumeration.nextElement();
            // filters out 127.0.0.1 and inactive interfaces
            if (iface.isLoopback() || !iface.isUp()) continue;

            Enumeration<InetAddress> inetAddresses = iface.getInetAddresses();
            while (inetAddresses.hasMoreElements()) {
                String ip = inetAddresses.nextElement().getHostAddress();
                // 排除 回環IP/ipv6 地址
                if (ip.contains(":")) continue;
                if (StringUtils.isNotBlank(ip)) ips.add(ip);
            }
        }
    } catch (SocketException e1) {
        e1.printStackTrace();
    }
    return ips;
}
/** 獲取內網IP */
public static String getLocalIntranetIp() {
    List<String> ips = getLocalIps();
    for (String ip : ips) {
        if (isIntranetIp(ip)) return ip;
    }
    return "";
}

/** 判斷是否為內網IP
 *  tcp/ip協議中, 專門保留了三個IP地址區域作為私有地址, 其地址范圍如下:
 *  10.0.0.0/8: 10.0.0.0~10.255.255.255
 *  172.16.0.0/12: 172.16.0.0~172.31.255.255
 *  192.168.0.0/16: 192.168.0.0~192.168.255.255
 */
public static boolean isIntranetIp(String ip) {
    try {
        if (ip.startsWith("10.") || ip.startsWith("192.168.")) return true;
        // 172.16.x.x~172.31.x.x
        String[] ns = ip.split("\\.");
        int ipSub = Integer.valueOf(ns[0] + ns[1]);
        if (ipSub >= 17216 && ipSub <= 17231) return true;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}

到此,相信大家對“JAVA語言的常用操作”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石屏县| 商洛市| 宣汉县| 防城港市| 遂溪县| 宜黄县| 清苑县| 伊宁市| 凤翔县| 盐城市| 滦平县| 绵阳市| 古交市| 封开县| 镇沅| 泗阳县| 墨脱县| 土默特左旗| 马边| 铁岭县| 涡阳县| 封丘县| 东平县| 昌宁县| 蕉岭县| 汉源县| 康定县| 广宁县| 湖口县| 襄城县| 邯郸市| 日土县| 濮阳县| 迁安市| 丰都县| 三门县| 平安县| 泰安市| 江安县| 河北省| 无锡市|