当前位置: 首页 > 编程笔记 >

Java从现有数据构造集合

古明煦
2023-03-14
本文向大家介绍Java从现有数据构造集合,包括了Java从现有数据构造集合的使用技巧和注意事项,需要的朋友参考一下

示例

标准馆藏

Java Collections框架

List从单个数据值构造a的一种简单方法是使用java.utils.Arraysmethod Arrays.asList:

List<String> data = Arrays.asList("ab", "bc", "cd", "ab", "bc", "cd");

所有标准集合的实现都提供了构造函数,该构造函数将另一个集合作为参数,在构造时将所有元素添加到新集合中:

List<String> list = new ArrayList<>(data); // 将按原样添加数据
Set<String> set1 = new HashSet<>(data); // 将添加仅保留唯一值的数据
SortedSet<String> set2 = new TreeSet<>(data); // 将添加保持唯一值和排序的数据
Set<String> set3 = new LinkedHashSet<>(data); // 将添加仅保留唯一值的数据 and preserving the original order

Google Guava Collections框架

另一个很棒的框架是Google Guava惊人的实用程序类(提供便利的静态方法),用于构造不同类型的标准集合,Lists并且Sets:

 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 ...
 List<String> list1 = Lists.newArrayList("ab", "bc", "cd");
 List<String> list2 = Lists.newArrayList(data);
 Set<String> set4 = Sets.newHashSet(data);
 SortedSet<String> set5 = Sets.newTreeSet("bc", "cd", "ab", "bc", "cd");

映射集合

Java Collections框架

类似地,对于映射,Map<String, Object> map可以使用以下所有元素构造一个新映射:

Map<String, Object> map1 = new HashMap<>(map);
SortedMap<String, Object> map2 = new TreeMap<>(map);

Apache Commons Collections框架

使用Apache Commons您可以使用阵列中创建映射ArrayUtils.toMap,以及MapUtils.toMap:

 import org.apache.commons.lang3.ArrayUtils;
 ...
 // 取自org.apache.commons.lang.ArrayUtils#toMap JavaDoc

 // 创建一个Map映射颜色。
 Map colorMap = MapUtils.toMap(new String[][] {{
     {"RED", "#FF0000"},
     {"GREEN", "#00FF00"},
     {"BLUE", "#0000FF"}});

数组的每个元素必须是aMap.Entry或Array,包含至少两个元素,其中第一个元素用作键,第二个元素用作值。

Google Guava Collections框架

Google Guava框架中的实用程序类名为Maps:

 import com.google.common.collect.Maps;
 ...
 void howToCreateMapsMethod(Function<? super K,V> valueFunction,
           Iterable<K> keys1, 
           Set<K> keys2, 
           SortedSet<K> keys3) {
     ImmutableMap<K, V> map1 = toMap(keys1, valueFunction); // 不变的副本
     Map<K, V> map2 = asMap(keys2, valueFunction); // 实时映射视图
     SortedMap<K, V> map3 = toMap(keys3, valueFunction); // 实时映射视图
 }

Java SE 8

使用Stream,

Stream.of("xyz", "abc").collect(Collectors.toList());

要么

Arrays.stream("xyz", "abc").collect(Collectors.toList());
 类似资料:
  • 我正在创建一个程序,该程序获取用户的信息并输出最小值,最大值,平均值,总和,并计算其中有多少个值。我真的很难弄清楚如何创建100个项目的默认构造函数以及用户应该定义的数组大小。 > 创建新的数据集对象。创建对象的客户端指定可以添加到集中的最大项数。(编写一个具有一个 int 参数的构造函数。 还要编写一个默认构造函数,该构造函数创建一个能够处理100个项目的DataSet。 将整数数据项添加到数据

  • 问题内容: 我正在尝试执行以下操作 如何使用Numpy数组中的所有元素轻松高效地创建集合? 问题答案: 如果需要一组元素,这是另一种可能更快的方法: PS :之间执行比较后,和一个10x100阵列上,我发现,它们都在大约相同的速度来执行。对于3x3阵列,最快的版本是迭代器版本: 我建议这样做,因为它是内存消耗较少的版本(它随阵列的大小扩展得很好)。 PPS :还有一个NumPy函数可以执行类似的操

  • 本文向大家介绍Java构造函数,包括了Java构造函数的使用技巧和注意事项,需要的朋友参考一下 构造函数与方法相似,但在以下方面有所不同。 它们没有任何返回类型。 构造函数的名称与类的名称相同。 每个类都有一个构造函数。如果我们未为类明确编写构造函数,则Java编译器将为该类建立默认构造函数。 每次创建一个新对象时,将至少调用一个构造函数。 一个类可以具有多个构造函数。 示例 输出结果

  • 序对 为了在具体的表面上实现这一数据抽象,scheme 提供了一种称为 序对 的复合结构,这种结构可以通过 cons 构造出来。过程 cons 取两个参数,返回一个包含这两个参数作为其成分的符合数据对象。其实个人理解就是二维数据描述,可以抽象的理解成平面点。 给出一个序对,可以用基本过程 car 和 cdr 方式取出。 (define x (cons 1 2)) (car x) 1 (cdr

  • 我试图理解为什么在谈到构造函数时,类成员的可访问性之间存在差异。 考虑下面的例子: 的私有成员作为私有成员,不应从访问。对于字段和方法,情况确实如此,但构造函数似乎没有遵循相同的规则。 从JLS-8(6.6.1.确定可访问性)中,我们可以阅读: [...] 引用类型的成员(类、接口、字段或方法)或类类型的构造函数只有在类型可访问且声明该成员或构造函数允许访问时才可访问: > [……] 否则,成员或

  • 问题内容: 在春季,bean的类可能没有公共构造函数,而只有私有构造函数吗?创建bean时会调用此私有构造函数吗?谢谢。 问题答案: 是的,Spring可以调用私有构造函数。如果找到具有正确参数的构造函数,无论可见性如何,它将使用反射将其构造函数设置为可访问的。