package demo;
import java.util.Arrays;
/**
* 取二维数组的所有列的最小值组成一个数组
*/
public class Ary {
public static void main(String[] args) {
int[][] iAry = {{1, 5, 2},{3, 4, 6, 2}};
int rows = iAry.length;
System.out.println("二维数组为:");
/**
当然下面可以使用
System.out.println(Arrays.deepToString(iAry));
来打印该二维数组,但打印出来后不利于查看
*/
for(int row = 0; row < rows; row++){
for(int col = 0; col < iAry[row].length; col++){
System.out.print(iAry[row][col] + "\t");
}
System.out.println();
}
int colMax = iAry[0].length;
for(int row = 1; row < rows; row++){
if(iAry[row].length > colMax){
colMax = iAry[row].length;
}
}
System.out.println("该二维数组的最大列数为:" + colMax);
int[] ary = new int[colMax];
//将小于最大列的行补充0至最大列数
for(int row = 0; row < rows; row++){
if(iAry[row].length < colMax){
iAry[row] = Arrays.copyOf(iAry[row], colMax);
}
}
for(int col = 0; col < colMax; col++){
int min = iAry[0][col];
for(int row = 1; row < rows; row++){
if(iAry[row][col] < min){
min = iAry[row][col];
}
}
System.out.println("第" + col + "列的最小值为:" + min);
ary[col] = min;
}
System.out.println("取该二维数组的所有列的最小值组成的一维数组为:" + Arrays.toString(ary));
}
}
有时候将别人的项目导入到自己的workspace中会出现注释乱码的现象
这时候
Window->Preferences->General->Workspace->Text file encoding->选UTF-8一般就没有问题了
package demo;
import java.util.ArrayList;
import java.util.List;
/*
生产者/消费者模式
假设有这样一种情况:有一个盘子,盘子里只能放一颗鸡蛋。A专门往盘子里放鸡蛋,如果盘子里有鸡蛋,则一直等到盘子里没鸡蛋;
B专门从盘子里拿鸡蛋,如果盘子里没鸡蛋,则等待直到盘子里有鸡蛋。
* */
public class Plate {
private List<Egg> eggs = new ArrayList<Egg>(1);
public synchronized Egg getEgg(){
while(eggs.size() == 0){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Egg egg = eggs.get(0);
System.out.println("拿到鸡蛋");
eggs.clear();//清空盘子
notify();//唤醒放鸡蛋线程,使放鸡蛋线程放鸡蛋
return egg;
}
public synchronized void putEgg(Egg egg){
while(eggs.size() > 0){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
eggs.add(egg);//往盘子里放鸡蛋
System.out.println("放入鸡蛋");
notify();//唤醒取鸡蛋线程,使取鸡蛋线程取鸡蛋
}
static class PutEggThread extends Thread{
private static final int PUT_EGG_TIMES = 5;
private Plate plate;