㈠ java如何深度一個object
java本身好像沒有提供這個方法的吧,只有你自己重新創建一個對象,然後賦值給這個對象。
iamge的復制可以用BufferedImage的方法:
public WritableRaster Data(WritableRaster outRaster)計算 BufferedImage 的一個任意矩形區域,並將其復制到指定的 WritableRaster。要計算的區域由指定 WritableRaster 的邊界確定。指定 WritableRaster 必須具有與此圖像兼容的 SampleModel。如果 outRaster 為 null,則創建一個合適的 WritableRaster。
不過還有一個簡單的辦法,就是創建一個一樣大小和一樣類型的BufferedImage,然後把要復制的圖畫上去,這兩個圖片就是一樣的了。
㈡ java 深度優先搜索(回溯法)求集合的冪集
import java.util.ArrayList;
import java.util.List;
public class BackTrack {
public static void main(String[] args) {
//初始化一個集合,放在list裡面
List<String> list=new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("f");
List<String> li=new ArrayList<String>();
PowerSet(0,list,li);
}
//回溯法求冪集
public static void PowerSet(int i,List<String> list,List<String> li){
if(i>list.size()-1){System.out.println(li);}
else{
li.add(list.get(i));//左加
PowerSet(i+1,list,li); //遞歸方法
li.remove(list.get(i)); //右去
PowerSet(i+1, list, li);
}
}
}
註:該方法採用中序遍歷二叉樹(實際這棵樹是不存在的)。對於第一個元素,左節點加進去,右節點去掉。對於第i一個節點,左加,右去。直到i大於元素的總個數。
輸出結果:
[1, 2, 3, 4]
[1, 2, 3]
[1, 2, 4]
[1, 2]
[1, 3, 4]
[1, 3]
[1, 4]
[1]
[2, 3, 4]
[2, 3]
[2, 4]
[2]
[3, 4]
[3]
[4]
[]