91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

利用Java怎么對集合進行壓縮

發布時間:2021-01-14 14:17:29 來源:億速云 閱讀:502 作者:Leah 欄目:開發技術

利用Java怎么對集合進行壓縮?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

現在有兩個集合:names和ages

List<String> names = new ArrayList<>(Arrays.asList("張三", "李四", "王五"));
List<Integer> ages = new ArrayList<>(Arrays.asList(24, 25, 27));

壓縮完之后我們遍歷壓縮對象變成了下面這種形式:

張三:24
李四:25
王五:27

也就是name:age的鍵值對的形式,當然,如果我們的集合比較多,我們還可以壓縮更多的集合。比如一個人的各種信息,id:name:age等等。

OK,知道了什么是壓縮,下面不回長篇大論,直接給出壓縮的幾種形式,

壓縮集合的幾種方式

方式一:Java 8的IntStream

List<String> names = new ArrayList<>(Arrays.asList("張三", "李四", "王五"));
List<Integer> ages = new ArrayList<>(Arrays.asList(24, 25, 27));
//方式一:java8的IntSream
Stream<String> stream = IntStream
      .range(0, Math.min(names.size(), ages.size()))
      .mapToObj(i -> names.get(i) + ":" + ages.get(i));
//遍歷輸出
stream.forEach(System.out::println);

這種方式比較簡單,獲取兩個集合的流,然后轉化為對象。java8可以直接使用。

方式二:Guava Streams

List<String> names = new ArrayList<>(Arrays.asList("張三", "李四", "王五"));
List<Integer> ages = new ArrayList<>(Arrays.asList(24, 25, 27));

//方式二:guava
//第一種
Streams.forEachPair(
       Stream.of("張三", "李四", "王五"),
       Stream.of(1, 2,3),
       (name, age) -> System.out.println(name + ":" + age));
//第二種:
Stream<String> stream2 = Streams.zip(names.stream(), ages.stream(), 
        (name, age) -> name + ":" + age);
stream2.forEach(System.out::println);
//第三種:
Stream<String> stream3 = Streams.mapWithIndex(
        Stream.of("a", "b", "c"),
        (str, index) -> str + ":" + index);
stream3.forEach(System.out::println);

以上是幾種實現的方式,這位大佬給出了一種,我又去官網找了其他幾種。另外使用guava的時候,版本要求21以上。我們在pom文件添加以下依賴即可:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>30.1-jre</version>
 </dependency>

這里注意使用最新版的就可以。其他的也許會報錯。我試了版本21的,也出錯。

方式三:Using jOOλ (jOOL)

jOOL還在Java 8 Lambda上提供了一些有趣的新功能,并且通過對Tuple1到Tuple16的支持,zip操作變得更加有趣:

//方式三:jool
//第一種
Seq<Tuple2<String,Integer>> s1 = Seq.of("張三","李四", "王五")
    .zip(Seq.of(24,25,27));
//第二種
Seq<String> s2 = Seq.of(1, 2, 3)
    .zip(Seq.of("a", "b", "c"), (x, y) -> x + ":" + y);
//第三種
Seq<Tuple2<String,Long>> s3 = Seq.of("a", "b", "c").zipWithIndex();
s1.forEach(System.out::println);
s2.forEach(System.out::println);
s3.forEach(System.out::println);

Seq結果是一個壓縮元組,我們可以看看。

(tuple(1, "a"), tuple(2, "b"), tuple(3, "c"))

這種方式也是需要添加依賴的。在pom文件添加如下依賴即可:

<dependency>
     <groupId>org.jooq</groupId>
     <artifactId>jool-java-8</artifactId>
     <version>0.9.14</version>
</dependency>

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

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

AI

治县。| 鄂托克旗| 慈溪市| 宝兴县| 乃东县| 西昌市| 镇坪县| 汶上县| 广州市| 偏关县| 页游| 衡东县| 稷山县| 临沭县| 和平区| 秀山| 会昌县| 古丈县| 武定县| 女性| 乌拉特后旗| 洞口县| 荔浦县| 黑水县| 香格里拉县| 香港| 土默特左旗| 内黄县| 江陵县| 仲巴县| 永兴县| 阜城县| 定结县| 准格尔旗| 洛浦县| 江永县| 额尔古纳市| 五家渠市| 蕲春县| 大同县| 财经|