【问题标题】:How to make Java Set? [closed]如何制作Java Set? [关闭]
【发布时间】:2012-09-27 04:57:24
【问题描述】:

谁能帮帮我? 例子

  • 一个{1,2,3}
  • B {1,4,5}

代码sn-p:

a.intersect(b).print()
// Result 1 . twin between two object

a.merge(b).print()
// Result 1,2,3,4,5

下面写代码有效吗? 如果没有,我必须修复哪个部分?

public static void main(String[] args) {
    // TODO code application logic here
   Set<Integer> a = new TreeSet<Integer>();
   a.add(1);
   a.add(2);
   a.add(6);
   a.remove(2);
   a.add(1); //gak berpengaruh karena sudah ada yang 1 sebelumnya
   //mengapa begituu ? karena et adalah collection yang tidak dapat memiliki elemen kembar.
   System.out.println("A = " + a);

   Set<Integer> b = new TreeSet<Integer>();
   b.add(2);
   b.add(6);
   b.add(1);
   System.out.println("B = " + b); //hasilnya 1,2,6.
   //loh?? kok bisa ? krn sy pake TreeSet, jadi udah terurut.

   b.retainAll(a); //ini rumus intersect XD
   for (Integer i: b)
   {
       System.out.print(i);
   }
}

}

【问题讨论】:

标签: java collections set


【解决方案1】:

像这样:

import java.util.*;
Set<Integer> a = new HashSet<Integer>();
a.add( 1);
a.add( 2);
a.add( 3);

或者从一个 Array/ 或多个字面量中添加;先换一个列表。

Integer[] array = new Integer[]{ 1, 4, 5};
Set<Integer> b = new HashSet<Integer>();
b.addAll( Arrays.asList( b));         // from an array variable
b.addAll( Arrays.asList( 8, 9, 10));  // from literals

要获得交点:

// copies all from A;  then removes those not in B.
Set<Integer> r = new HashSet( a);
r.retainAll( b);
// and print;   r.toString() implied.
System.out.println("A intersect B="+r);

希望这个答案有帮助。投票吧!

【讨论】:

  • 你忘记了 union (merge).. 为此使用 addAll
  • Arrays.asList 不适用于 int[] 数组。但是,您需要一个 Integer[] 数组,但从 Java 5 开始,指定数组创建表达式已过时,例如Arrays.asList(1, 4, 5) 完成这项工作。但是你根本不需要中间的List,你可以使用Collections.addAll(b, 1, 4, 5);
  • Set&lt;Integer&gt; b = new HashSet&lt;Integer&gt;(); b.addAll( Arrays.asList( array)); // not b // 成功了!如果你已经有一个数组,在这种情况下是真的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-26
相关资源
最近更新 更多