免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

java中List轉(zhuǎn)map的方法

本篇內(nèi)容主要講解“java中List轉(zhuǎn)map的方法”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“java中List轉(zhuǎn)map的方法”吧!

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括汾西網(wǎng)站建設(shè)、汾西網(wǎng)站制作、汾西網(wǎng)頁(yè)制作以及汾西網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,汾西網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到汾西省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

方法1:

@Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", age='" + age + '\'' +
                    '}';
        }
Map<Long, User> maps = new HashMap<>();

for (User user : userList) { maps.put(user.getId(), user); }

方法2:使用 guava

 Map<Long, User> maps = Maps.uniqueIndex(userList, new Function<User, Long>() {
            @Override
            public Long apply(User user) {
                return user.getId();
            }
   });
可以進(jìn)一步簡(jiǎn)化

ImmutableMap<String, WebUser> map = Maps.uniqueIndex(users,WebUser::getNickname);

方法3: 使用jdk1.8

Map<Long, User> maps = userList.stream().collect(Collectors.toMap(User::getId,Function.identity()));

Map<Long,User> maps = userList.stream().collect(Collectors.toMap(User::getId,Function.identity()));

看來(lái)還是使用JDK 1.8方便一些。另外,轉(zhuǎn)換成map的時(shí)候,可能出現(xiàn)key一樣的情況,如果不指定一個(gè)覆蓋規(guī)則,上面的代碼是會(huì)報(bào)錯(cuò)的。轉(zhuǎn)成map的時(shí)候,最好使用下面的方式:

Map<Long, User> maps = userList.stream().collect(Collectors.toMap(User::getId, Function.identity(), (key1, key2) -> key2));

Map<Long,User> maps = userList.stream().collect(Collectors.toMap(User::getId,Function.identity(),(key1,key)->key2))

有時(shí)候,希望得到的map的值不是對(duì)象,而是對(duì)象的某個(gè)屬性,那么可以用下面的方式:

Map<Long, String> maps = userList.stream().collect(Collectors.toMap(User::getId, User::getAge, (key1, key2) -> key2));

Map<Long,String>maps = userList.stream().collect(Collectors.toMap(User:getId,User::getAge,(key1,key2)->key2));

1、分組

List里面的對(duì)象元素,以某個(gè)屬性來(lái)分組,例如,以id分組,將id相同的放在一起:

//List 以ID分組 Map<Integer,List<Apple>>

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

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


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

打印結(jié)果:{1=Apple{id=1, name='蘋果1', money=3.25, num=10}, 2=Apple{id=2, name='香蕉', money=2.89, num=30}, 3=Apple{id=3, name='荔枝', money=9.99, num=40}}

3、過濾Filter

從集合中過濾出來(lái)符合條件的元素:

//過濾出符合條件的數(shù)據(jù)
List<Apple> filterList = appleList.stream().filter(a -> a.getName().equals("香蕉")).collect(Collectors.toList());
 
System.err.println("filterList:"+filterList);
[Apple{id=2, name='香蕉', money=2.89, num=30}]

4.求和

將集合中的數(shù)據(jù)按照某個(gè)屬性求和:

//計(jì)算 總金額
BigDecimal totalMoney = appleList.stream().map(Apple::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
System.err.println("totalMoney:"+totalMoney);  //totalMoney:17.48

5.查找流中最大 最小值
Collectors.maxBy 和 Collectors.minBy 來(lái)計(jì)算流中的最大或最小值。


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

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

java中List轉(zhuǎn)map的方法

java中List轉(zhuǎn)map的方法

到此,相信大家對(duì)“java中List轉(zhuǎn)map的方法”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

分享標(biāo)題:java中List轉(zhuǎn)map的方法
標(biāo)題來(lái)源:http://m.newbst.com/article36/gciisg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化網(wǎng)站制作營(yíng)銷型網(wǎng)站建設(shè)網(wǎng)站收錄品牌網(wǎng)站制作全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)