爪哇 2博客
 爪哇 2博客

如何在Java中将列表转换为Set

在这篇文章中,我们将看到如何在Java中将List转换为Set。 数组列表哈希集.

由于HashSet不允许重复,因此当您将ArrayList转换为HashSet时,所有重复项都将被丢弃。

您可以简单地使用HashSet的构造函数将ArrayList转换为HashSet。

1
2
3
 
哈希集 = 哈希集( 清单 );
 

这是简单的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
组织 . Arpit . 爪哇 2blog;
 
进口 爪哇 . 实用程序 .数组列表;
进口 爪哇 . 实用程序 .哈希集;
进口 爪哇 . 实用程序 . 清单 ;
进口 爪哇 . 实用程序 .;
 
上市 清单 ToSetMain {
 
     上市 静态的 虚空 主要 ( args [])
    {
         清单 <> 国家列表= 数组列表<>();
        国家列表.(“印度”);
        国家列表.(“中国”);
        国家列表.(“不丹”);
        国家列表.( “尼泊尔” );
        国家列表.(“印度”);
 
         系统 .. 打印 (“ == ====================”);
         系统 .. 打印 (“国家名单:”);
         系统 .. 打印 (“ == ====================”);
         对于 ( 国家:国家列表)
        {
             系统 .. 打印 (国家);
        }
 
        //将列表转换为set
        <> 国家Set= 哈希集<>(国家列表);
         系统 .. 打印 (“ == ====================”);
         系统 .. 打印 (“国家组:”);
         系统 .. 打印 (“ == ====================”);
         对于 ( 国家:国家Set)
        {
             系统 .. 打印 (国家);
        }
    }
}
 

当您在程序上方运行时,将获得以下输出

== == ===================
国家名单:
== =====================
印度
中国
不丹
尼泊尔
印度
== =====================
国家集:
== =====================
不丹
中国
尼泊尔
印度

爪哇 8设置示例列表

您可以使用Java 8流 API将列表转换为集合。

1
2
3
4
 
//将列表转换为Java 8中的设置
        <> 国家Set=国家列表.(). 收藏 (收藏家. 至 Collection(哈希集 :: ));
 

只需将ListToSetMain.java中的第29行更改为上方,您将获得相同的输出。

自定义对象时要设置的列表

将自定义对象列表转换为Set时,需要非常小心。
让’通过一个简单的例子可以理解:

创建一个名为的类"Country"。我们将把此类的对象放入列表,然后将其转换为列表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
组织 . Arpit . 爪哇 2blog;
 
上市 国家 {
 
     名称 ;
     人口;
 
     上市 国家( 名称 , 人口) {
        ();
         这个 . 名称 = 名称 ;
         这个 .人口 = 人口;
    }
     上市 getName () {
         返回 名称 ;
    }
     上市 虚空 组 Name( 名称 ) {
         这个 . 名称 = 名称 ;
    }
     上市 getPopulation() {
         返回 人口;
    }
     上市 虚空 组 Population( 人口) {
         这个 .人口 = 人口;
    }
    @覆写
     上市 至 String() {
         返回 "国家 [name=" + 名称 + “,人口=” + 人口 + “]” ;
    }
}
 

创建一个名为的类ListToSetCustomObjectMain as below:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
组织 . Arpit . 爪哇 2blog;
 
进口 爪哇 . 实用程序 .数组列表;
进口 爪哇 . 实用程序 .哈希集;
进口 爪哇 . 实用程序 . 清单 ;
进口 爪哇 . 实用程序 .;
 
上市 清单 ToSetCustomObjectMain {
 
     上市 静态的 虚空 主要 ( args [])
    {
         清单 <国家> 国家列表= 数组列表<>();
        国家列表.( 国家(“印度”,20000));
        国家列表.( 国家(“中国”,30000));
        国家列表.( 国家(“不丹”,1000));
        国家列表.( 国家( “尼泊尔” ,3000));
        国家列表.( 国家(“印度”,20000));
 
         系统 .. 打印 (“ == ====================”);
         系统 .. 打印 (“国家名单:”);
         系统 .. 打印 (“ == ====================”);
         对于 (国家 国家:国家列表)
        {
             系统 .. 打印 (国家);
        }
 
        //将列表转换为set
        <国家> 国家Set= 哈希集<国家>(国家列表);
         系统 .. 打印 (“ == ====================”);
         系统 .. 打印 (“国家组:”);
         系统 .. 打印 (“ == ====================”);
         对于 (国家 国家:国家Set)
        {
             系统 .. 打印 (国家);
        }
    }
}
 

当您运行上述程序时,将获得以下输出:

== == ===================
国家名单:
== =====================
国家 [name=India, 人口=20000]
国家 [name=China, 人口=30000]
国家 [name=Bhutan, 人口=1000]
国家 [name=Nepal, 人口=3000]
国家 [name=India, 人口=20000]
== =====================
国家集:
== =====================
国家 [name=India, 人口=20000]
国家 [name=Nepal, 人口=3000]
国家 [name=India, 人口=20000]
国家 [name=Bhutan, 人口=1000]
国家 [name=China, 人口=30000]

如您所见,我们有 国家 [name=India, 人口=20000] 在输出中两次,但是这些是重复项,但HashSet不会将其视为重复项。
你知道为什么吗?
因为我们没有实施 哈希码和equals方法 in 国家 类 .
让’s 加 below methods 至 国家 类 .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
@覆写
     上市 整型 hashCode() {
         最后 整型 主要 = 31;
         整型 结果 = 1;
         结果 = 主要 * 结果 + (( 名称 == 空值 ) ? 0 : 名称 .hashCode());
         结果 = 主要 * 结果 + ( 整型 ) (人口 ^ (人口 >>> 32));
         返回 结果 ;
    }
    @覆写
     上市 布尔值 等于 ( 目的 对象 ) {
         如果 ( 这个 == 对象 )
             返回 真正 ;
         如果 ( 对象 == 空值 )
             返回 ;
         如果 (getClass() != 对象 .getClass())
             返回 ;
        国家 其他 = (国家) 对象 ;
         如果 ( 名称 == 空值 ) {
             如果 ( 其他 . 名称 != 空值 )
                 返回 ;
        } 其他 如果 (! 名称 . 等于 ( 其他 . 名称 ))
             返回 ;
         如果 (人口 != 其他 .人口)
             返回 ;
         返回 真正 ;
    }
 

当您添加了这两种方法后再次运行以上程序时。您将获得以下输出:

== == ===================
国家名单:
== =====================
国家 [name=India, 人口=20000]
国家 [name=China, 人口=30000]
国家 [name=Bhutan, 人口=1000]
国家 [name=Nepal, 人口=3000]
国家 [name=India, 人口=20000]
== =====================
国家集:
== =====================
国家 [name=India, 人口=20000]
国家 [name=Nepal, 人口=3000]
国家 [name=China, 人口=30000]
国家 [name=Bhutan, 人口=1000]

如您所见,我们只有一个条目 国家 [name=India, 人口=20000] 在集合中。

那’所有关于在Java中将Set转换为列表的内容。


导入联系人

您可能还喜欢:

分享这个

作者

关注作者

相关文章

  • 在Java中将日期转换为LocalDate
    1月12日

    爪哇 日期到LocalDate

    在这篇文章中,我们将看到如何在Java中将Date转换为LocalDate。有时,我们可能需要将Date转换为新的Java 8 API,反之亦然。在Java中,有多种将Date转换为LocalDate的方法。另请参见:使用Date类的[InInstant()方法将Java中的LocalDate转换为Date…]

  • 在Java中将LocalDate转换为Date
    1月11日

    迄今为止的Java LocalDate

    在这篇文章中,我们将看到如何将LocalDate转换为Date。 爪哇 8引入了许多有关日期和时间的新API。有多种方法可以将Java LocalDateTime转换为日期。使用Instant对象您可以使用来自Zone的Instant对象将LocalDate转换为Date。这是 […]

  • 在Java中将LocalDateTime转换为时间戳
    11月18日

    在Java中将LocalDateTime转换为时间戳

    在本文中,我们将如何将LocalDateTime转换为Timestamp。在学习如何将localdatetime转换为时间戳之前,让我们了解LocalDateTime和Timestamp,并了解这种转换的重要性。 LocalDateTime LocalDateTime在Java 8中已引入。LocalDateTime可以导入时间包:import 爪哇 .time.LocalDateTime; LocalDateTime是使用的不可变对象[…]

  • 要映射的Java流列表
    4月26日

    要映射的Java流列表

    在本文中,我们将看到如何在Java 8中使用Stream将List转换为Map。’s 至 Map()可与Stream一起使用,以在Java中将List转换为Map。考虑一个名为Movie的类,它具有3个字段–ID,名称和流派[crayon-601f0325d644d186316991 /]创建电影列表并将其转换为[…]

  • 2月29日

    爪哇 长到字符串

    在本文中,我们将看到如何在Java中将long转换为String。有很多方法可以将long转换为String.Let’s一一看到。使用Long.toString()可以使用Long类的toString()方法将long转换为String。 [crayon-601f0325d6892779755137 /]如果Long可以为空,而您不’t want 至 […]

  • 在Java中将LocalDateTime转换为Date
    15 May

    爪哇 LocalDateTime到日期

    在这篇文章中,我们将看到如何将LocalDateTime转换为Date。 爪哇 8引入了许多有关日期和时间的新API。有多种方法可以将Java LocalDateTime转换为日期。使用Instant对象您可以使用Instantd对象将LocalDateTime转换为日期,该对象可以从ZonedDateTime中获取。这是 […]

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


让’s be Friends

©2020 爪哇 2博客