gpt4 book ai didi

java - 使用集合重写数组

转载 作者:行者123 更新时间:2023-12-01 19:23:57 25 4
gpt4 key购买 nike

我有一个任务,我可以使用最简单的方法 - 数组来完成该任务。现在我想更进一步,使用一些更复杂的 java 功能(如集合)重做它,但我从未使用过比二维矩阵更复杂的东西。我应该看什么以及如何开始。塔应该成为一个 Collection 品吗?这是任务:

我们有两个类别 - 塔楼和街区。塔是用积木 build 的。这是用于测试的示例代码:

 Block k1=new Block("yellow",1,5,4);
Block k2=new Block("blue",2,2,6);
Block k3=new Block("green",3,4,2);
Block k4=new Block("yellow",1,5,4);

Tower tower=new Tower();
tower.add(k1,k2,k3);

"Added 3 blocks."

System.out.println(tower);

"block: green, base: 4cm x 3cm, thicknes: 2 cm
block: blue, base: 6cm x 2cm, thicknes: 2 cm
block: yellow, base: 5cm x 4cm, thicknes: 1 cm"

tower.add(k2);

"Tower already contains this block."

tower.add(k4);

"Added 1 block."

System.out.println(tower);

"block: green, base: 4cm x 3cm, thicknes: 2 cm
block: blue, base: 6cm x 2cm, thicknes: 2 cm
block: yellow, base: 5cm x 4cm, thicknes: 1 cm
block: yellow, base: 5cm x 4cm, thicknes: 1 cm"

tower.delete(k1);

"Deleted 1 block"

tower.delete(k1);

"Block not in tower"

System.out.println(tower);

"block: blue, base: 6cm x 2cm, thicknes: 2 cm
block: yellow, base: 5cm x 4cm, thicknes: 1 cm
block: yellow, base: 5cm x 4cm, thicknes: 1 cm"

假设我将 Tower 视为 block 的集合。如何在整个集合中搜索特定 block ?或者我应该使用其他接口(interface)?

最佳答案

您可以将Set用作集合这可以防止重复元素。

如果您尝试添加已存在的元素,它将返回false

Set<Block> set = new HashSet<Block>();

boolean added = set.add( k1 );
if( added ) {
System.out.println("Added 1 block.");
} else {
System.out.println("Tower already contains this block.");
}

要知道集合是否已包含元素,该类应正确实现 equals()方法。

要提供描述消息,您可以覆盖 toString()方法并迭代集合:

 for( Block b : set ) {
System.out.println( b ); // invokes b.toString()
}

关于java - 使用集合重写数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2465084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com