java集合笔记二 —— List集合(概念方法,list集合去重,模拟栈结构

最后

分享一套我整理的面试干货,这份文档结合了我多年的面试官经验,站在面试官的角度来告诉你,面试官提的那些问题他最想听到你给他的回答是什么,分享出来帮助那些对前途感到迷茫的朋友。

面试经验技巧篇
  • 经验技巧1 如何巧妙地回答面试官的问题
  • 经验技巧2 如何回答技术性的问题
  • 经验技巧3 如何回答非技术性问题
  • 经验技巧4 如何回答快速估算类问题
  • 经验技巧5 如何回答算法设计问题
  • 经验技巧6 如何回答系统设计题
  • 经验技巧7 如何解决求职中的时间冲突问题
  • 经验技巧8 如果面试问题曾经遇见过,是否要告知面试官
  • 经验技巧9 在被企业拒绝后是否可以再申请
  • 经验技巧10 如何应对自己不会回答的问题
  • 经验技巧11 如何应对面试官的“激将法”语言
  • 经验技巧12 如何处理与面试官持不同观点这个问题
  • 经验技巧13 什么是职场暗语

面试真题篇
  • 真题详解1 某知名互联网下载服务提供商软件工程师笔试题
  • 真题详解2 某知名社交平台软件工程师笔试题
  • 真题详解3 某知名安全软件服务提供商软件工程师笔试题
  • 真题详解4 某知名互联网金融企业软件工程师笔试题
  • 真题详解5 某知名搜索引擎提供商软件工程师笔试题
  • 真题详解6 某初创公司软件工程师笔试题
  • 真题详解7 某知名游戏软件开发公司软件工程师笔试题
  • 真题详解8 某知名电子商务公司软件工程师笔试题
  • 真题详解9 某顶级生活消费类网站软件工程师笔试题
  • 真题详解10 某知名门户网站软件工程师笔试题
  • 真题详解11 某知名互联网金融企业软件工程师笔试题
  • 真题详解12 国内某知名网络设备提供商软件工程师笔试题
  • 真题详解13 国内某顶级手机制造商软件工程师笔试题
  • 真题详解14 某顶级大数据综合服务提供商软件工程师笔试题
  • 真题详解15 某著名社交类上市公司软件工程师笔试题
  • 真题详解16 某知名互联网公司软件工程师笔试题
  • 真题详解17 某知名网络安全公司校园招聘技术类笔试题
  • 真题详解18 某知名互联网游戏公司校园招聘运维开发岗笔试题

资料整理不易,点个关注再走吧

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

import java.util.List;

public class test1 {

public static void main(String[] args) {

//往List集合中添加类的对象

List list = Arrays.asList(

new Student(“zhang”,12),

new Student(“zhao”,15)

);

for(int i=0;i<list.size();i++){

System.out.println(list.get(i));

}

System.out.println(“—”+list.size());

System.out.println(“============”);

//将String数组中的值放入List集合

String[] s = {“a”,“b”,“c”};

List list1 = Arrays.asList(s);

for(String ss:list1){

System.out.println(ss);

}

System.out.println(“—”+list1.size());

System.out.println(“============”);

//将Integer数组中的值放入List集合

Integer[] i = {1,2,3};

List list2 = Arrays.asList(i);

for(Integer ii:list2){

System.out.println(ii);

}

System.out.println(“============”);

//直接像这样把值写进括号里面也可以

List list3 = Arrays.asList(“a”,“b”,“c”);

System.out.println(list3.toString());

}

}

import java.util.Arrays;

import java.util.List;

public class test2 {

public static void main(String[] args) {

//数组与List集合链接起来,更新任何一个,另一个都会随之改变

String[] s = {“a”,“b”,“c”,“d”};

List list = Arrays.asList(s);

System.out.println(list.toString());

System.out.println(“==============”);

//更改List集合

list.set(0,“e”);

//分别打印list集合和数组s

System.out.println(list.toString());

System.out.println(Arrays.toString(s));

System.out.println(“==============”);

//更改数组

s[1] = “f”;

//分别打印list集合和数组s

System.out.println(list.toString());

System.out.println(Arrays.toString(s));

}

}

结果为

在这里插入图片描述

遍历List集合

package review.ListDemo1;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Iterator;

import java.util.List;

public class test3 {

public static void main(String[] args) {

List list = new ArrayList();

list.add(“aaa”);

list.add(“bbb”);

list.add(“ccc”);

//遍历List集合

// 方式一、增强for循环

for(String ss : list){

System.out.println(ss);

}

//方式二、get方法与size方法相结合

for(int i=0;i<list.size();i++){

System.out.println(list.get(i));

}

//方式三、iterator迭代器遍历

Iterator it = list.iterator();

while(it.hasNext()){

System.out.println(it.next());

}

}

}

LinkedList类概述

底层数据结构是链表,查询慢,增删快

线程不安全,效率高

LinkedList的特有功能:

  1. 添加功能:

public void addFirst(Object obj):在该集合开头插入指定的元素

public void addLast(Object obj)将指定的元素追加到此列表的末尾。// 这个方法相当于add(Object) 。

  1. 获取功能:

public Object getFirst():返回此集合中的第一个元素。

getLast():返回此列表中的最后一个元素。

  1. 删除功能:

public Object removeFirst():移除集合中第一个元素

public Object removeLast():移除集合中最后一个元素

import java.util.LinkedList;

public class demo10 {

public static void main(String[] args) {

LinkedList linkedList = new LinkedList();

//add()添加元素

linkedList.add(“hadoop”);

linkedList.add(“hive”);

linkedList.add(“flink”);

System.out.println(linkedList.toString()); //[hadoop, hive, flink]

//addFirst(Object obj) 在该集合开头插入指定的元素

linkedList.addFirst(“apple”);

System.out.println(linkedList.toString()); //[apple, hadoop, hive, flink]

//addLast(Object obj)将指定的元素追加到此列表的末尾

linkedList.addLast(“pear”);

System.out.println(linkedList.toString()); //[apple, hadoop, hive, flink, pear]

//getFirst() 返回此集合中的第一个元素

System.out.println(linkedList.getFirst()); //apple

//getLast() 返回此列表中的最后一个元素

System.out.println(linkedList.getLast()); //pear

//removeFirst() 移除集合中第一个元素,返回被删除的元素

System.out.println(linkedList.removeFirst()); //apple

System.out.println(linkedList.toString()); //[hadoop, hive, flink, pear]

//removeLast() 移除集合中最后一个元素,返回被删除的元素

System.out.println(linkedList.removeLast()); //pear

System.out.println(linkedList.toString()); //[hadoop, hive, flink]

}

}

list的相关操作

list集合去重
方式一、利用一个新集合去重

package review.ListDemo1;

import java.util.ArrayList;

import java.util.List;

public class demo7 {

public static void main(String[] args) {

List list1 = new ArrayList();

list1.add(“hadoop”);

list1.add(“hive”);

list1.add(“spark”);

list1.add(“hadoop”);

list1.add(“hadoop”);

List list2 = new ArrayList();

for(int i=0;i< list1.size();i++){

if(!list2.contains(list1.get(i))){

list2.add(list1.get(i));

}

}

System.out.println(list2.toString());

}

}

在这里插入图片描述

这里的思路是写一个新的list2集合,然后for循环遍历list1,如果list2中没有包含list1的这个元素list1.get(i),则将这个元素加入到list1中。如果list2集合中包含这个元素,则不加入。

方式二、在原集合上操作

package review.ListDemo1;

import java.util.Objects;

public class Student {

private String name;

private int age;

public Student() {

}

public Student(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return “Student{” +

“name='” + name + ‘’’ +

“, age=” + age +

‘}’;

}

public void printD(){

System.out.println(“test”);

}

public String toStringTest(){

return “Student{” +

“name='” + name + ‘’’ +

“, age=” + age +

‘}’;

}

@Override

public boolean equals(Object o) {

if (this == o) return true;

if (o == null || getClass() != o.getClass()) return false;

Student student = (Student) o;

return age == student.age &&

Objects.equals(name, student.name);

}

}

package review.ListDemo1;

import java.util.ArrayList;

import java.util.List;

public class demo9 {

public static void main(String[] args) {

List list1 = new ArrayList();

list1.add(“hadoop”);

list1.add(“hive”);

list1.add(“spark”);

list1.add(“hadoop”);

list1.add(“hadoop”);

System.out.println(list1.toString());

for(int i=0;i<list1.size();i++){

for(int j=i+1;j<list1.size();j++){

if(list1.get(i).equals(list1.get(j))){

list1.remove(j);

j–;

}

}

}

System.out.println(list1.toString());

}

}

在这里插入图片描述

这里的思路是不创建一个新的list集合,就单纯的通过list集合本身的双重for循环遍历。将集合中的每一个对象与后面的其余对象进行对比,如果重复则删去。

第一重for循环是选择一个对象。第二重for循环将此对象与后面剩余的集合元素进行对比。

如果两个对象里面的属性值都相同,则删去后面重复的对象。

这里需要注意的是,要在Student类中重写equals方法,否则equals方法默认的是比较地址值,重写后改为对比属性值。

还有一点需要注意,这里删去元素后需要 j - -

因为假如删去list集合中序号为3的元素,则原先序号为4的元素就会向前补位,变成序号3

因此,如果没有 j - - 语句,就会导致跳过一个元素没有检测是否重复。

用LinkedList 模拟栈结构

import java.util.LinkedList;

写在最后

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

最后祝愿各位身体健康,顺利拿到心仪的offer!

由于文章的篇幅有限,所以这次的蚂蚁金服和京东面试题答案整理在了PDF文档里

蚂蚁、京东Java岗4面:原理+索引+底层+分布式+优化等,已拿offer

蚂蚁、京东Java岗4面:原理+索引+底层+分布式+优化等,已拿offer

蚂蚁、京东Java岗4面:原理+索引+底层+分布式+优化等,已拿offer

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

因为假如删去list集合中序号为3的元素,则原先序号为4的元素就会向前补位,变成序号3

因此,如果没有 j - - 语句,就会导致跳过一个元素没有检测是否重复。

用LinkedList 模拟栈结构

import java.util.LinkedList;

写在最后

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

最后祝愿各位身体健康,顺利拿到心仪的offer!

由于文章的篇幅有限,所以这次的蚂蚁金服和京东面试题答案整理在了PDF文档里

[外链图片转存中…(img-PVsrA8L9-1715453616592)]

[外链图片转存中…(img-WAeAyqZE-1715453616592)]

[外链图片转存中…(img-z93an7Az-1715453616593)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 13
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值