Java提高

基础:

1、java中的下标只能访问数组,不能访问容器
2、可以不用迭代器遍历,用for
3、大多数方法不返回迭代器,所以不要用迭代器遍历,用for,即java中其实把迭代器淘汰了

ArrayList(数组表)

其对应c++中vector
Long[] a=new Long[v.size()];
a=v.toArray(a);  //转为数组

ArrayList<Integer>v=new ArrayList<>();
v.add(5);v.add(8); //在末尾插入
v.add(1,3);  //在位置1插入3
v.remove(1); //删除位置的元素
v.set(0,1);  //修改
v.indexOf(2); //查找,没找到,返回-1
ArrayList<Integer> v2=new ArrayList<>(); v2=(ArrayList<Integer>)v.clone();  //拷贝
out.print(v.get(0));
v.clear();

Iterator it=v.iterator();    //用迭代器遍历
//Iterator<Integer> it=v.iterator();
while(it.hasNext()) {
    out.print(it.next());
}

Collections.sort(v, (a,b)->(b-a));   //排序


LinkedList(链表)

其对应c++中的list(用法和ArrayList类似)
其实现是用链表实现,而非数组,所以用需要用链表实现的某些数据结构时,也可以用它
即其也可以被用作stack、queue、deque等

HashSet和TreeSet

HashSet是基于哈希表实现的,其无序
TreeSet是基于红黑树实现的,其有序
HashSet<Integer>s=new HashSet<>();
s.add(10);s.add(20);s.add(30);
out.print(s.contains(20)+"\n");
s.remove(20);
Iterator it=s.iterator(); 
//Iterator<Integer> it=s.iterator();
while(it.hasNext()) {    out.print(it.next());
}

//除了以下方法,其他和hashset一样
TreeSet<Integer>s=new TreeSet<>((a,b)->(a-b)); 
s.add(1);s.add(2);s.add(3);
out.print(s.ceiling(2)); //找到>=2的数
out.print(s.higher(2)); //找到>2的数


HashMap和TreeMap

Java中map要转换为set遍历
TreeMap默认升序(key升序)
两个map的用法基本一样,但treemap有序
HashMap<Integer,Integer>mp=new HashMap<>();
mp.put(1,100);
mp.put(2,200);
mp.put(3, 300);
out.print(mp.get(100)+"\n");
mp.remove(1);
for(HashMap.Entry<Integer, Integer> e:mp.entrySet()){     //entry映射项(键-值对)   //用这种遍历方法比较好
	out.print(e.getKey() + " " + e.getValue()+"\n");
}
//System.out.println("kkkk\n");  //系统输入的优先级比out高

Iterator it=mp.keySet().iterator();
while(it.hasNext()) {
    Integer key=(Integer)it.next();
    out.print(mp.get(key)+" ");
}          for (Integer k : mp.keySet()) {
    out.print(mp.get(k)+" ");
}

TreeMap<Integer, String>mp2=new TreeMap<>();
mp2.put(1,"z");mp2.put(2, "y");mp2.put(3, "x");
for(Map.Entry<Integer, String>e:mp2.entrySet()) {
    out.print(e+"\n");
}
Iterator it2=mp2.values().iterator();
while(it2.hasNext()) {
    out.print(it2.next()+" ");
}
for (String s : mp2.values()) {
    out.print(s+" ");
}

队列

ArrayDeque(数组双端队列)
ArrayDeque<Integer>q=new ArrayDeque<>(); //队列
q.offer(1);  //入队   //成功返回true,失败返回false
q.offer(2);
q.offer(3);
out.print(q.peek());  //访问队首
while(!q.isEmpty()) {
    out.print(q.pop());  //访问队首并弹出
}

ArrayDeque<Integer>s=new ArrayDeque<>();
s.push(1);
s.push(2);
s.push(3);
out.print(s.peek());
while(!s.isEmpty()) {
	out.print(s.pop());
}

双端队列

ArrayDeque<Integer>dq=new ArrayDeque<>();
dq.addFirst(2);
dq.addFirst(1);
dq.addLast(3);
out.print(dq.getFirst());
out.print(dq.getLast());
out.print(dq.removeFirst());
out.print(dq.removeLast());

PriorityQueue

对应c++中的priority_queue
它是默认小者优先,从前面出列
PriorityQueue<Integer>pq=new PriorityQueue<>((a,b)->(b-a));
pq.offer(1);   //填加元素
out.print(pq.peek()+"\n");  //访问栈顶
out.print(pq.poll());  //访问栈顶并取出
pq.size();
pq.isEmpty();


字符串

最好还是转为字符数组做(别用字符数组比较)
有删除操作 用 可变字符串
若只有取子串操作 用 字符串
String str="abcdef";
str.charAt(2);

char[] ch=new char[10];
ch=str.toCharArray();  //转数组

str.equals(str2);  //是否相等
str.indexOf(str2); //查找str2,返回第一次出现str2的位置,没有则返回-1
str2=str.substring(2,4);//取子串,从2开始到4-1结束,左闭右开

StringBulider(可变字符串)

java中的String不可改变,所以要修改字符串可用StringBulider(可变字符串)
StringBuilder s=new StringBuilder("123456");
for(int i=0;i<s.length();++i) {  //遍历
    out.print(s.charAt(i));
}
s.append(str);  //在s后面增加str
s.delete(2,3); //删除字符串,左闭右开
s.setCharAt(0, 'a'); //修改
s.indexOf(str2); //find 查找
s.reverse();  //翻转
s.toString();
s.substring(2, 3); //截取,返回的是String类型


注意:
小心double精度问题




全部评论

相关推荐

今天周一休息,突发奇想写一篇阶段总结。如题,我已经去了一个和Java彻底毫无关联的行业。曾经我以为自己能在计算机行业发光发热,没想到刚入行一年多就当了逃兵。从最开始的热爱到现在一看到代码就厌恶,不知道自己经历了什么。所以我去干什么了?答案是:在成都当了租房销售。上班那会压力大了就念叨着去干租房中介,但是一直下不去这个决心,想着自己学了四年多的计算机知识,终究还是不甘心。终于在某一天准备八股文的时候,看着无数篇和工作内容关系不大的理论知识,那一刻下定决心,决定尝试一下销售行业,也算是给自己一个交代。后面阴差阳错的投了成都自如去当租房管家,没想到面试很顺利,在当天一百多个面试的人里面,我成为了为数不多通过的几个幸运儿之一。目前已经培训通过,正式入职,也开了单,也有压力但是每天过得很开心,真心喜欢那种和人交流的感觉,哪怕是最后没有选择找我租房。说这些也是想告诉那些大三,大四正在找Java实习而焦虑的同学:你们现在还年轻,选择很多,容错率也很高,可以尽情去尝试自己喜欢的行业和工作。不用因为某一次的面试没通过或者简历石沉大海而焦虑,更不用因为身边人都在挤编程的独木桥就强迫自己跟风。也算是自己的碎碎念吧,也希望自己能在新的领域取得一点小成就。也祝牛油工作顺利!
许愿面试顺利的小白很...:ai来了,如果有天赋的话,销售真的是个很好的工作
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
10551次浏览 93人参与
# 你的实习产出是真实的还是包装的? #
1855次浏览 42人参与
# 巨人网络春招 #
11324次浏览 223人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7561次浏览 43人参与
# 简历第一个项目做什么 #
31664次浏览 335人参与
# 重来一次,我还会选择这个专业吗 #
433439次浏览 3926人参与
# 米连集团26产品管培生项目 #
5938次浏览 216人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187103次浏览 1122人参与
# 牛客AI文生图 #
21422次浏览 238人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152348次浏览 888人参与
# 研究所笔面经互助 #
118898次浏览 577人参与
# 简历中的项目经历要怎么写? #
310217次浏览 4210人参与
# AI时代,哪些岗位最容易被淘汰 #
63649次浏览 823人参与
# 面试紧张时你会有什么表现? #
30505次浏览 188人参与
# 你今年的平均薪资是多少? #
213074次浏览 1039人参与
# 你怎么看待AI面试 #
180035次浏览 1255人参与
# 高学历就一定能找到好工作吗? #
64324次浏览 620人参与
# 你最满意的offer薪资是哪家公司? #
76485次浏览 374人参与
# 我的求职精神状态 #
448043次浏览 3129人参与
# 正在春招的你,也参与了去年秋招吗? #
363373次浏览 2638人参与
# 腾讯音乐求职进展汇总 #
160638次浏览 1111人参与
# 校招笔试 #
470875次浏览 2964人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务