java 集合 之 equals contain,java开发模式面试题

System.out.println(“元素”+string);

}

Collections.sort(strings);

System.out.println(“-----------排序后-----------”);

for (String string : strings) {

System.out.println(“元素”+string);

}

}

public static void main(String[] args) {

CollectionTest collectionTest = new CollectionTest();

// collectionTest.testSort1();

collectionTest.testSort2();

}

对Integer泛型的list进行排序–>

List integerList=new ArrayList();

Random random = new Random(); // 创建一个新的随机生成器

Integer k;

for(int i=0;i<10;i++){

do{

k=random.nextInt(100);// 随机生成100以内的整数

}while(integerList.contains(k)); //若已存在,循环运行,生成其他值

integerList.add(k);

}

思路:

给泛型为Integer的list里插入十个100以内的不重复的随机数。

Random类的nextInt(100)方法可以返回100以内的随机数。

Collections.sort()方法给Integer list按数字升序排列顺序。

Comparable接口-----可比较的

1.实现该接口表示:这个类的实例可以比较大小,可以进行自然排序

2.定义了默认的比较规则

3.其实现类需实现compareTo()方法

compareTo()方法返回正数表示打,负数表示小,0表示相等

Comparator接口-----比较工具接口

1.用于定义临时比较规则,而不是默认比较规则

2.其实现类需要实现compare()方法

3.Comparator和Comparable都是Java集合框架的成员

Java集合框架:Collection接口、Collections工具类、Map接口、Comparator接口、Comparable接口

1. 创建一副扑克牌,不考虑大小王

  1. 创建两名玩家,玩家至少要有ID、姓名、手牌等属性,手牌为扑克牌的集合

  2. 洗牌,将之前创建的扑克牌顺序打乱(说明是有序的)

  3. 发牌,将洗牌之后的扑克牌集合,从第一张开始,发给两名玩家,按照一人一张的方式,每人发两张

  4. 开始游戏,比大小,取两人各自的点数最大的牌进行比较,点数大的赢,若大小相同比花色(黑红梅方)

package com.xk;

public class Poker

{

public String color;

public String points;

public Poker(String color,String points){ this.color=color; this.points=points; }

@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((points == null) ? 0 : points.hashCode()); result = prime * result + ((color == null) ? 0 : color.hashCode()); return result; }

@Override public boolean equals(Object obj) {

if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false;

Poker other = (Poker) obj; if (points == null) {

if (other.points != null) return false; } else if (!points.equals(other.points)) return false;

if (color == null)

{ if (other.color != null) return false; }

else if (!color.equals(other.color))

return false; return true; } }

package com.xk; import java.util.ArrayList; import java.util.List;

public class Player {

public int id; public String name;

public List<Poker> handCards=new ArrayList<>();

public Player(int id,String name){

this.id=id; this.name=name;

}

}

package com.xk; import java.util.Comparator;

public class CompareToPoker implements Comparator<Poker>

{ @Override public int compare(Poker o1, Poker o2) {

// TODO Auto-generated method stub String[] color = {“方片”, “梅花”, “红桃”, “黑桃”};

String[] point = {“2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “10”, “J”,“Q”,“K”, “A”};

int temp1 = 0; int temp2 = 0; for(int i=0;i<point.length;i++){ if(o1.points.equals(point[i])) temp1 += i*10; if(o2.points.equals(point[i])) temp2 += i*10; }

for(int i=0;i<color.length;i++){ if(o1.color.equals(color[i])) temp1 += i;

if(o2.color.equals(color[i])) temp2 += i; }

if( temp1 > temp2) return -1;

if( temp1 < temp2 )

return 1; return 0; } }

public class GameStart{

String[] point=new String[]{“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”,“A”};

String[] color=new String[]{“黑桃”,“红桃”,“梅花”,“方块”};

Scanner input = new Scanner(System.in);

List<Poker> pokerList=new ArrayList<>();

List<Player> playerList=new ArrayList<>();

public void initialize(){ for(int i=0;i<4;i++) { for(int j=0;j<13;j++) {

pokerList.add(new Poker(color[i],point[j])); } }

System.out.println(“------------创建扑克牌-------------”);

int i=0; for(Poker poker : pokerList){ System.out.print(poker.color+poker.points+" ");

i++; if(i%13==0){ System.out.println(“”); } } } public void shuffle(){ System.out.println(“-------------开始洗牌-------------”);

Collections.shuffle(pokerList);//shuffle List随机排序 System.out.println(“-------------洗牌完成-------------”); }

public void sort(){ Collections.sort(playerList.get(0).handCards,new CompareToPoker());

Collections.sort(playerList.get(1).handCards,new CompareToPoker());

System.out.println(playerList.get(0).name+“最大手牌:”+playerList.get(0).handCards.get(0).color+playerList.get(0).handCards.get(0).points); System.out.println(playerList.get(1).name+“最大手牌:”+playerList.get(1).handCards.get(0).color+playerList.get(1).handCards.get(0).points); }

public void print(){ System.out.println(“----------玩家各自手牌-------------”);

for(Player player : playerList){ System.out.print(player.name+“:”);

for(Poker poker : player.handCards){ System.out.print(“[”+poker.color+poker.points+“]”); } System.out.println(“”); } }

public void compareToPonint(){ System.out.println(“--------------获胜方--------------”);

List<Poker> maxPoker = new ArrayList<Poker>();

List<Poker> minPoker = new ArrayList<Poker>();

maxPoker.add(playerList.get(0).handCards.get(0));

maxPoker.add(playerList.get(1).handCards.get(0));

minPoker.add(playerList.get(0).handCards.get(1));

minPoker.add(playerList.get(1).handCards.get(1));

Collections.sort(maxPoker,new CompareToPoker());

Collections.sort(minPoker,new CompareToPoker());

/* * 判断最大牌点数是否相等 * 判断最小牌点数是否相等 * 判断最大牌花色 * 判断最小牌花色 * */ if(maxPoker.get(0).points.equals(maxPoker.get(1).points)){

if(minPoker.get(0).points.equals(minPoker.get(1).points)){

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

Java架构进阶面试及知识点文档笔记

这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理

image

Java分布式高级面试问题解析文档

其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!

image

互联网Java程序员面试必备问题解析及文档学习笔记

image

Java架构进阶视频解析合集
外链图片转存中…(img-C6raOlO8-1711640232131)]

最后

Java架构进阶面试及知识点文档笔记

这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理

[外链图片转存中…(img-g8zHcSk2-1711640232132)]

Java分布式高级面试问题解析文档

其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!

[外链图片转存中…(img-i5HEBbPr-1711640232132)]

互联网Java程序员面试必备问题解析及文档学习笔记

[外链图片转存中…(img-KuHi75ez-1711640232133)]

Java架构进阶视频解析合集

  • 25
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值