斗地主:
- 制牌:A--K一共13个数字,四个花色,4*13,大王,小王
- 洗牌:shuffle将集合中的字符串随机置换
- 发牌:将一个集合中的元素,分发到4个集合
- 问题: 红桃3--0 红桃4--1
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
/*斗地主:
1.制牌:A--K一共13个数字,四个花色,4*13,大王,小王
2.洗牌:shuffle将集合中的字符串随机置换
3.发牌:将一个集合中的元素,分发到4个集合
4.问题: 红桃3--0 红桃4--1*/
public class Poker {
public static void main(String[] args) {
//制牌开始
String[] colors = {"♠","♥","♣","♦"};
String[] nums = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
Map<Integer,String> map = new HashMap<Integer,String>();
List<Integer> list = new ArrayList<Integer>();
int count = 0;
for(String color : colors) {
for(String num : nums) {
map.put(count, color+num);
list.add(count);
count++;
}
}
map.put(count,"小王");
list.add(count++);
map.put(count,"大王");
list.add(count);
/*for(Entry<Integer, String> entry:map.entrySet()) {
System.out.println(entry.getValue());
}*/
//制牌结束
//洗牌开始
Collections.shuffle(list);
//洗牌结束
//发牌开始
ArrayList<Integer> dipai = new ArrayList<Integer>();
ArrayList<Integer> pengpeng = new ArrayList<Integer>();
ArrayList<Integer> meijuan = new ArrayList<Integer>();
ArrayList<Integer> luoluo = new ArrayList<Integer>();
//方法一
for(int n = 0; n < list.size();n++) {
Integer num = list.get(n);
if(n>=51) {
dipai.add(num);
}else if(n % 3 == 0) {
pengpeng.add(num);
}else if(n % 3 == 1) {
meijuan.add(num);
}else if(n % 3 == 2) {
luoluo.add(num);
}
}
//方法二
/*for(int n = 1; n <= 3;n++) {
dipai.add(list.remove(0));
}
while(true) {
if(!list.isEmpty()) {
pengpeng.add(list.remove(0));
}
if(!list.isEmpty()) {
meijuan.add(list.remove(0));
}
if(!list.isEmpty()) {
luoluo.add(list.remove(0));
}else {
break;
}
}*/
//发牌结束
//看牌
kanpai(dipai,map);
kanpai(pengpeng,map);
kanpai(meijuan,map);
kanpai(luoluo,map);
}
private static void kanpai(ArrayList<Integer> list, Map<Integer, String> map) {
Collections.sort(list);
StringBuilder sb = new StringBuilder();
sb.append("[");
for(Integer n : list) {
sb.append(map.get(n)).append(",");
}
System.out.println(sb.replace(sb.length()-1, sb.length(), "]"));
}
}
编写一个类Book,具有name,price,press,author
然后创建5个对象放入ArrayList中,并实现按照price大小排序,
然后遍历ArrayList输出每个Book对象, 使用toString 方法打印。
import java.util.ArrayList;
import java.util.Comparator;
/*编写一个类Book,具有name,price,press,author
然后创建5个对象放入ArrayList中,并实现按照price大小排序,
然后遍历ArrayList输出每个Book对象, 使用toString 方法打印。*/
public class TestBook {
public static void main(String[] args) {
Book b1 = new Book("活着1",26.00,"作家出版社1","余华1");
Book b2 = new Book("活着2",23.00,"作家出版社2","余华2");
Book b3 = new Book("活着3",29.00,"作家出版社3","余华3");
Book b4 = new Book("活着4",33.00,"作家出版社4","余华4");
Book b5 = new Book("活着5",18.00,"作家出版社5","余华5");
ArrayList<Book> list = new ArrayList<Book>();
list.add(b1);list.add(b2);
list.add(b3);list.add(b4);
list.add(b5);
list.sort(new Comparator<Book>() {
@Override
public int compare(Book o1, Book o2) {
// TODO Auto-generated method stub
return new Double(o1.price).compareTo(new Double(o2.price));
}
});
for(Book b : list) {
System.out.println(b);
}
}
}
class Book{
String name;
double price;
String press;
String author;
public Book(String name, double price, String press, String author) {
super();
this.name = name;
this.price = price;
this.press = press;
this.author = author;
}
@Override
public String toString() {
return "Book [name=" + name + ", price=" + price + ", press=" + press + ", author=" + author + "]";
}
}
HashSet去重:
已知 Student类 属性包括 int id,String name
创建 5个Student对象存入 List中
Student s1 = new Student(1,"aaa");
Student s2 = new Student(2,"bbb");
Student s3 = new Student(3,"ccc");
Student s4 = new Student(4,"ddd");
Student s5 = new Student(1,"aaa");
去掉重复元素:当Student的id和name值都相同时,任务是重复元素
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
/*已知 Student类 属性包括 int id,String name
创建 5个Student对象存入 List中
Student s1 = new Student(1,"aaa");
Student s2 = new Student(2,"bbb");
Student s3 = new Student(3,"ccc");
Student s4 = new Student(4,"ddd");
Student s5 = new Student(1,"aaa");
去掉重复元素:当Student的id和name值都相同时,任务是重复元素 */
public class TestStudent {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
Set<Student> set = new HashSet<Student>();
Student s1 = new Student(1,"aaa");
Student s2 = new Student(2,"bbb");
Student s3 = new Student(3,"ccc");
Student s4 = new Student(4,"ddd");
Student s5 = new Student(1,"aaa");
set.add(s1);set.add(s2);
set.add(s3);set.add(s4);
set.add(s5);
list.addAll(set);
for(Student s : list) {
System.out.println(s);
}
}
}
class Student{
int id;
String name;
public Student(int id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}
public int hashCode() {
return Objects.hash(id,name);
}
@Override
public boolean equals(Object obj) {
Student stu = (Student)obj;
return stu.name.equals(name)&&stu.id==id;
}
}
/*案例2:已知 List<String> list = new ArrayList<String>();
list.add("张三丰,北京");
list.add("李四丰,上海");
list.add("王二小,北京");
list.add("小明,河北");
list.add("小毛,北京");
list.add("王五,北京");
要求:求出每个地区有多少人,都是谁?
例如: 北京 4人 张三丰 王二小 小毛 王五*/
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
/*案例2:已知 List<String> list = new ArrayList<String>();
list.add("张三丰,北京");
list.add("李四丰,上海");
list.add("王二小,北京");
list.add("小明,河北");
list.add("小毛,北京");
list.add("王五,北京");
要求:求出每个地区有多少人,都是谁?
例如: 北京 4人 张三丰 王二小 小毛 王五*/
public class TestArea {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
Map<String,String> map = new LinkedHashMap<String,String>();
list.add("张三丰,北京");
list.add("李四丰,上海");
list.add("王二小,北京");
list.add("小明,河北");
list.add("小毛,北京");
list.add("王五,北京");
for(String s : list) {
String[] split = s.split(",");
String key = split[1];//地区
String value = split[0];//姓名
if(map.containsKey(key)) {//如果这个地区名出现过
map.put(key,map.get(key)+" "+value);//之前统计的名字,加上现在的这个名字
}else {
map.put(key, value);//没出现过,就存进去
}
}
for(Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey()+entry.getValue().split(" ").length+"人 " + entry.getValue());
}
}
}
键盘录入一个文件夹路径,作为源文件夹;键盘录入一个文件夹路径,作为目标文件夹
写代码将源文件夹拷贝到目标文件夹中
a
b
b/a
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;
/*键盘录入一个文件夹路径,作为源文件夹;键盘录入一个文件夹路径,作为目标文件夹
写代码将源文件夹拷贝到目标文件夹中
a
b
b/a*/
public class TestCopy {
public static void main(String[] args) throws Exception {
File srcDir = inputDir();
File dir = inputDir();
File destDir = new File(dir,srcDir.getName());
destDir.mkdir();
copyDir(srcDir,destDir);
System.out.println("复制成功!");
}
private static void copyDir(File srcDir, File destDir) throws Exception {
File[] files = srcDir.listFiles();
for(File f : files) {
File srcFile = f;
File destFile = new File(destDir,f.getName());
if(f.isFile()) {
copyFile(srcFile,destFile);
}else {
destFile.mkdir();//一定要记得创建文件夹!!!
copyDir(srcFile,destFile);
}
}
}
private static void copyFile(File srcFile, File destFile) throws Exception {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));
byte[] b = new byte[1024];
int len = 0;
while((len=bis.read(b))!=-1) {
bos.write(b, 0, len);
}
bis.close();
bos.close();
}
private static File inputDir() {
File file;
boolean flag;
Scanner sc = new Scanner(System.in);
do {
flag = false;
System.out.println("请输入一个文件夹路径:");
String dir = sc.nextLine();
file = new File(dir);
if(!file.isDirectory()) {
System.out.println("您的录入有误,请重新录入!");
flag = true;
}
}while(flag);
return file;
}
}