先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
正文
Map中通过containsKey()方法和containsValue()方法来判断键和值是否存在
Map 中对对象进行了 Key 标记,通过 get(Key)可以取得对应的对象
Map 的containsValue()方法的参数是 Object 对象,因为Map 的 Value 值是对象元素
Map 的containsKey()方法取得 Map 映射的 Key 值
List中的contains()方法调用equals()方法来进行比较。所以要重写Hashcode和equals方法
跟 List 的 contains()方法一样,Map 中的 containsValue()方法也会调用每个 Value 值的 equals()方法去和参数对象比较
id 是string类型 contains方法使用equals方法 来比较,所以值相等就返回ture
Value 是Student类型,自己定义的,默认的contains方法中的equals方法,比较的是两个引用是否一样,所以要重写equals方法
由于是比较两student类型是否相同,所以要做Student类中重写equals方法
怎么生成随机字符
public void testSort2() {
List strings = new ArrayList();
String str = “0123456789abcdefghijklmnobqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”;
Random random = new Random();
for (int a = 0; a < 10; a++) {
StringBuilder builder = new StringBuilder();
do {
int j = random.nextInt(10) + 1;
for (int i = 0; i < j; i++) {
builder.append(str.charAt(random.nextInt(str.length())));
}
} while (strings.contains(builder));
System.out.println(“将要添加字符串”+builder);
String s=builder.toString();
strings.add(s);
}
System.out.println(“-----------排序前------------”);
for (String string : strings) {
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. 创建一副扑克牌,不考虑大小王
-
创建两名玩家,玩家至少要有ID、姓名、手牌等属性,手牌为扑克牌的集合
-
洗牌,将之前创建的扑克牌顺序打乱(说明是有序的)
-
发牌,将洗牌之后的扑克牌集合,从第一张开始,发给两名玩家,按照一人一张的方式,每人发两张
-
开始游戏,比大小,取两人各自的点数最大的牌进行比较,点数大的赢,若大小相同比花色(黑红梅方)
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)){
最后
总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些Redis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习
还有更多学习笔记面试资料也分享如下:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
牌花色 * 判断最小牌花色 * */ if(maxPoker.get(0).points.equals(maxPoker.get(1).points)){
最后
总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些Redis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习
还有更多学习笔记面试资料也分享如下:
[外链图片转存中…(img-AbrVDmDf-1713609706334)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-r26JayJR-1713609706335)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!