arraylist

《吊打面试官》系列-ArrayList

本小妞迷上赌 提交于 2020-01-09 10:53:57
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前言 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚( 请允许我使用一下夸张的修辞手法 )。 于是在一个寂寞难耐的夜晚,我痛定思痛,决定开始写互联网技术栈面试相关的文章,希望能帮助各位读者以后面试势如破竹,对面试官进行360°的反击,吊打问你的面试官,让一同面试的同僚瞠目结舌,疯狂收割大厂Offer! 所有文章的名字只是我的噱头,我们应该有一颗谦逊的心,所以希望大家怀着空杯心态好好学,一起进步。 正文 一个婀娜多姿,穿着衬衣的小姐姐,拿着一个精致的小笔记本,径直走过来坐在我的面前。 看着眼前这个美丽的女人,心想这不会就是Java基础系列的面试官吧,真香。 不过看样子这么年轻应该问不出什么深度的吧,嘻嘻。(哦?是么😏) 帅丙,上次面试到现在都过去2个星期你才过来,为啥鸽了这么久? 美丽迷人的面试官您好,因为之前得了流感,差点就没了,还有最近年底忙年会和年终review的事情,实在太忙了,不好意思。 还做了一波导演(其实是打杂)去拍摄蘑菇街的年会视频了

数组排序

我与影子孤独终老i 提交于 2020-01-09 04:57:12
数组排序方法的实现 JAVA中在运用数组进行排序功能时,一般有四种方法: 快速排序法、冒泡法、选择排序法、插入排序法。 快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。 冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来。 选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组。 插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序。 <1>利用Arrays带有的排序方法快速排序 import java.util.Arrays; public class Test2{ public static void main(String[] args){ int[] a={5,4,2,4,9,1}; Arrays.sort(a); //进行排序 for(int i: a){ System.out.print(i); } } } <2>冒泡排序算法 public static int[] bubbleSort(int[] args){//冒泡排序算法 for(int i=0;i<args.length-1;i++){ for(int j=i+1;j<args.length;j++){ if (args[i]>args[j]){ int temp=args[i]; args[i]=args[j]

Java基础加强之集合

本秂侑毒 提交于 2020-01-09 04:04:45
集合整体框架图 各集合框架的概述 1. Collection(常用List和Set,不常用Queue和Vector),单元素集合。 2. Map(常用HashMap和TreeMap,不常用HashTable),key-value映射关系。 3. Iterator(迭代器) 4. Comparable和Comparator比较器 5. Collections和Arrays工具类 Java中结合和数组的比较 1.  数组的长度在初始化时指定,只能保存定长的数据。   而集合可以保存不确定长度的数据。同时可以保存具有映射关系的数据(即关联数组,键值对key-value)。 2.  数据元素既可以是基本类型的值,也可以是对象,集合只能保存对象 (实际上是只保存对象的引用变量),基本数据类型的变量要转换成对应的包装类才能放入集合中。 常用集合特性概述 List系 List的特点: 元素有放入顺序,元素可以重复 。 List接口的三个实现类:ArrayList、LinkedList和Vector。 ArrayList、LinkedList和Vector的区别 LinkedList:底层是基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时也存储下一个元素的内存地址。 链表增删快,查找慢。 ArrayList和Vector: 两者底层都是基于数组实现的,查询快,增删慢。

Java课程设计--个人总结

最后都变了- 提交于 2020-01-09 03:48:00
Java课程设计--个人总结 Java团队课程设计-socket聊天室(Day4总结篇) 个人负责模块和任务说明 user端的发送到server的代码 user端接收server发送的代码 储存消息记录的数据结构 参与server端的代码编写 负责整个系统的具体转发逻辑和接收逻辑 Gitee提交记录 部分提交记录 各个分支对master分支的影响 详细个人提交记录 任务负责详细说明 我将转发信息分为三种情况: 1.当用户上线后系统马上发送的用户下线后别人发给他的离线消息 class OfflineMessage 2.当用户在线时别人发送给他的在线消息 class OnlineMessage 3.用户向服务器请求的历史消息 class HistoryMessage 因为其中的成员都是一样的,所以他们继承于class Message,具体关于如下方UML类图显示 既然要用socket发送,那么就需要implements Serializable,使其序列化 客户端具体发送--接收模型 先附上UML类图 其中class UserController中的方法和成员 public class UserController 在这个类里用于发送各种信息,比如登录请求、注册请求、历史信息请求、发送信息、发送文件 登录请求: public static void requestLogin(User

用Java Swing实现QQ聊天界面

我与影子孤独终老i 提交于 2020-01-09 03:00:23
Java团队课程设计-socket聊天室 用Java Swing实现QQ聊天界面 文章内容概要 1.代码过程中遇到的问题以及如何解决 2.团队项目中负责的功能展示 3.尚未完成的功能,今后的改进和总结 4.gitee的提交记录 编写Gui过程中遇到的问题 对JavaSwing布局管理器的总结 1.在控件有布局管理器的情况下,控件是无法通过setSize来控制大小的,只有当setLayout(null)的时候setSize,setLocation,setBounds方法才有实际用处 2.setPreferredSize可在有布局管理器的时生效,布局管理器会获取空间的preferredsize,因而可以生效 3.使用布局管理器会有很多局限性,许多控件的位置不能够正确的摆放,尤其是当有嵌套控件时如(JTextArea里插入图片,JScrollPane插入JTextArea)等情况时,布局管理器的作用会变得很鸡肋 4.使用setBounds方法可以将控件根据x,y直接插入JFrame中,同时也可以直接控件的大小,这个方法使布置控件更加灵活 对JavaSwing页面优化的理解 Swing属于比较老的工具集,生成的页面布局不好看。我尝试了很多的方法只能做到页面简洁,远远达不到美观。我看到比较好的优化就是重写所有鼠标类函数,这样做的好处是可以用JTextArea来替代Button控件

Merging two arrayLists into a new arrayList, with no duplicates and in order, in Java

允我心安 提交于 2020-01-09 02:17:06
问题 I am trying to "combine" two arrayLists, producing a new arrayList that contains all the numbers in the two combined arrayLists, but without any duplicate elements and they should be in order. I came up with this code below. I run through it and it makes sense to me, but Im not sure if I can be using < or > to compare get(i)'s in arrayLists. I am adding all the elements in array1 into the plusArray. Then I am going through the plusArray and comparing it to array2 to see if any of array2's

ArrayList去除重复元素(包括字符串和自定义对象)

时间秒杀一切 提交于 2020-01-09 02:07:42
1.去除重复字符串 package com.online.msym; import java.util.ArrayList; import java.util.Iterator; @SuppressWarnings({ "rawtypes", "unchecked" }) public class Demo1_ArrayList { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("a"); list.add("a"); list.add("b"); list.add("b"); list.add("c"); list.add("c"); list.add("c"); list.add("c"); ArrayList newList = getSingle(list); System.out.println(newList); } /* * 创建新集合将重复元素去掉 * 1,明确返回值类型,返回ArrayList * 2,明确参数列表ArrayList * * 分析: * 1,创建新集合 * 2,根据传入的集合(老集合)获取迭代器 * 3,遍历老集合 * 4,通过新集合判断是否包含老集合中的元素,如果包含就不添加,如果不包含就添加 */ public static

Spring源码学习(六)AbstractApplicationContext.refresh()

二次信任 提交于 2020-01-09 00:48:00
加油加油 🦆 大致过程 1 @Override 2 public void refresh() throws BeansException, IllegalStateException { 3 synchronized (this.startupShutdownMonitor) { 4 // Prepare this context for refreshing. 5 // 准备刷新的上下文环境 6 prepareRefresh(); 7 8 // Tell the subclass to refresh the internal bean factory. 9 //并读取XML,解析注册beanDefination,初始化beanFactory 10 // 11 ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(); 12 13 // Prepare the bean factory for use in this context. 14 //对beanFactory进行功能填充 15 prepareBeanFactory(beanFactory); 16 17 try { 18 // Allows post-processing of the bean factory in context

Java集合基础知识

匆匆过客 提交于 2020-01-09 00:28:07
Java集合框架基础: Collection为集合层级的根接口,集合中包含一组对象。 Set是一个不能包含重复元素的集合;List是一个有序集合,可以包含重复元素; Map是一种key-value结构的集合模型,不能包含重复的key值,每个key只能映射到一个value。 HashMap和HashTable的不同: a. HashMap允许key和value为null, 而HashTable不允许 b. HashTable是线程同步的,而HashMap不是。因此HashMap适合单线程环境,HashTable适合多线程环境(具体应用要根据场景需求,而不是谁适合谁不适合,在不需要线程同步限制的时候推荐使用HashMap,可以提高程序运行的效率) c. LinkedHashMap是HashMap的一个子类,如需遍历顺序,可以很方便的从HashMap转向LinkedHashMap,而HashTable它的顺序是不可知的 d. HashMap提供退key的Set进行遍历,因此它是fail-fast的,单HashTable提供对key的Enumeration进行遍历,不支持fail-fast e. HashTable被认为是个遗留的类,如果你寻求在迭代的时候修改Map,你应该使用CocurrentHashMap 补充: HashMap可以通过Map m = Collections

去除ArrayList集合中的重复自定义对象元素

血红的双手。 提交于 2020-01-08 21:53:57
要求去除ArrayList集合中重复的Student的对象(什么叫重复,所有属性值都相同叫做重复)。 思路: 1、创建一个新集合 2、遍历旧集合中的每一个元素,去新集合中找这个元素,如果这个元素不存在就添加到新集合中 Student类如下:有两个成员变量name和age public class Student { private String name; private int 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; } } 测试类如下: public class ListDemo { public static void main(String[] args) { //创建集合 ArrayList<Student> list = new ArrayList<Student>(); //创建集合元素对象 Student s1 = new Student("梨梨",21); Student s2 = new Student("熊熊",24); Student