Java集合框架中的List与Set

  1. // 简书作者:达叔小生
  2. Collection
  3. -> Set 无序不重复 -> 无序HashSet,需要排序TreeSet
  4. -> List 有序可重复 -> 查,改ArrayList,增删LinkedList

List为列表,中在列表中的对象是由顺序的排序的,并且是有重复的对象。

简单为:有序,有重复。

Set为集合,在集合中的对象是不按照顺序排列的,并且是没有重复的对象的。

简单为:无序,无重复。

Set为无序集合,无序无重复;

List为有序集合,有序有重复;

  1. // 简书作者:达叔小生
  2. Collection
  3. -> Set
  4. -> HashSet
  5. -> LinkedHashSet
  6. -> TreeSet
  7. -> List
  8. -> ArrayList
  9. -> Vector
  10. -> LinkedList

案例

  1. // 简书作者:达叔小生
  2. import java.util.List;
  3. import java.util.ArrayList;
  4. public class Demo{
  5. public static void main(String args[]){
  6. // 创建列表的实现类对象
  7. ArrayList<String> arrayList = new ArrayList<String>();
  8. // 添加数据
  9. arrayList.add("a");
  10. arrayList.add("b");
  11. arrayList.add("c");
  12. // 移除
  13. arrayList.remove(1);
  14. // 获取数据
  15. String s = arrayList.get(1);
  16. System.out.println(s);
  17. // 获取长度
  18. int a = arrayList.size();
  19. // 打印所有元素
  20. for(int i=0; i<arrayList.size(); i++){
  21. String s = arrayList.get(i);
  22. System.out.println(s);
  23. }
  24. }
  25. }
  1. // 简书作者:达叔小生
  2. public class ListDemo{
  3. public static void main(String[] args){
  4. // List
  5. List list = new ArrayList();
  6. // 添加元素
  7. list.add( new Student("a",12) );
  8. list.add( new Student("b",13) );
  9. list.add( new Student("c",14) );
  10. // 插入元素
  11. // list.add( 1, new Student("d",15) );
  12. // list.remove(44);
  13. // 角标越界IndexOutOfBoundsException)
  14. // list.set( 2, new Student("dashucoding", 16) );
  15. // 循环出对象
  16. for(Iterator it = List.iterator(); it.hasNext(); ){
  17. Student stu = (Student) it.next();
  18. System.out.println(stu);
  19. }
  20. // 获取对象
  21. Object obj = list.get(1);
  22. System.out.println(obj);
  23. // 获取对象
  24. for(int i = 0; i<list.size(); i++){
  25. System.out.println(list.get(i));
  26. }
  27. }
  1. // 简书作者:达叔小生
  2. import java.util.Set;
  3. import java.util.HashSet;
  4. public class Demo{
  5. public static void main(String args[]){
  6. HashSet<String> hashSet = new HashSet<String>();
  7. Set<String> set = hashSet;
  8. // 实现类向上转型为接口
  9. // 同理 Set<String> set = new HashSet<String>();
  10. // 添加元素
  11. set.add("a");
  12. set.add("b");
  13. set.add("c");
  14. set.add("d");
  15. // 获取集合中的元素长度
  16. int a = set.size();
  17. }
  18. }
  1. // 简书作者:达叔小生
  2. import java.util.Set;
  3. import java.util.HashSet;
  4. import java.util.Iterator;
  5. public class Demo{
  6. public static void main(String args[]){
  7. HashSet<String> hashSet = new HashSet<String>();
  8. Set<String> set = hashSet;
  9. // 实现类向上转型为接口
  10. // 同理 Set<String> set = new HashSet<String>();
  11. // 添加元素
  12. set.add("a");
  13. set.add("b");
  14. set.add("c");
  15. set.add("d");
  16. // 迭代器 iterator() 遍历整个set
  17. // 通过迭代器取出集合中的对象
  18. Iterator<String> it = set.iterator<String>();
  19. while(it.hasNext){
  20. String s = it.next();
  21. System.out.println(s);
  22. }
  23. }
  24. }
  1. // 简书作者:达叔小生
  2. public class ListIteratorDemo{
  3. // 创建List对象
  4. List list = new ArrayList();
  5. // 添加元素
  6. List.add("a");
  7. List.add("b");
  8. List.add("c");
  9. // 获取元素,iterator()方法进行迭代
  10. Iterator it = list.iterator();
  11. // 获取元素
  12. while(it.hasNext()){
  13. System.out.println(it.next());
  14. }
  15. }

知识点

next()返回迭代的下一个元素,如果抛出异常为:NoSuchElementException,为没有元素可以迭代。

迭代器

在迭代过程中,使用了集合的方法对元素进行操作,导致迭代器不知道集合中的变化,容易产生数据的不确定性,所以不要使用集合的方法进行操作元素,可以使用迭代器的方法进行操作。

迭代器的方法:

  1. // 简书作者:达叔小生
  2. hasNext()
  3. next()
  4. remove()

迭代器 java.util 接口 Iterator<E>

知道的接口:ListIterator<E>,XMLEventReader

知道的实现类:BeanContextSupport.BCSIterator,EventReaderDelegate,Scanner。

  1. // 简书作者:达叔小生
  2. public interface Iterator<E>

迭代器的三个方法:

方法 说明
hasNext() 返回的是boolean类型,如果集合中还有元素存在,就可以进行迭代,然后返回true,代表为还有元素存在,反之,返回的是false
next() 返回的是E,返回的是迭代出来的下一个元素
remove() 返回的类型为void,从迭代器中移除迭代器中的最后一个元素

列表迭代器

接口 Iterator<E>下的子接口有个:

ListIterator<E> 为列表迭代器

  1. // 简书作者:达叔小生
  2. java.util
  3. 接口ListIterator<E>
  4. 超级接口:Iterator<E>
  1. // 简书作者:达叔小生
  2. public interface ListIterator<E> extends Iterator<E>
  1. // 简书作者:达叔小生
  2. while(it.hasNext()){
  3. Object obj = it.next();
  4. if("a".equals(obj)){
  5. list.add("aaaaa");
  6. }
  7. }

列表迭代器的特性可以在迭代期间进行修改列表,然后获取迭代器在列表中的当前位置。

方法 说明
add(E e) 方法返回的是void类型,可以将指定的元素进行插入到列表中
hasNext() 方法返回的是boolean类型,该方法表示如果next返回一个元素后,不是抛出异常,则代表有下一个元素,则返回ture,否则返回false
hasPrevious() 返回的是boolean类型,该方法的作用是如果逆向遍历列表,列表迭代器中有多个元素,则返回为true,即简单说就是有没有前一个
next() 返回的是E,该方法表示返回列表中的下一个元素
nextIndex() 返回的是Int类型,该方法对next的后续调用所返回元素的索引
previous() 返回的是列表中的前一个元素,取出前一个
previousIndex() 返回的类型为int类型,返回对previous的后续调用所返回元素的索引
remove() 返回的类型为void,从列表中移除一个元素
set(E e) 返回的类型为Void,用指定的元素取替代nextprevious 返回的最后一个元素

使用ListIterator

  1. // 简书作者:达叔小生
  2. // 创建List对象
  3. List list = new ArrayList();
  4. // 添加元素
  5. List.add("a");
  6. List.add("b");
  7. List.add("c");
  8. // 列表迭代器
  9. ListIterator it = list.listIterator();
  10. while(it.hasNext()){
  11. Object obj = it.next();
  12. if("a".equals(obj)){
  13. // 添加 it.add("dashucoding");
  14. // 删除 it.set("dashucoding");
  15. }
  16. }

迭代器的List接口的子接口ListIterator,可以实现增删改查

List

接口List<E>,知道的实现类:

List是有序的,带索引的,元素可以重复

List可以增删改查,增加add(),删除remove(),修改set(),查询get()

  1. // 简书作者:达叔小生
  2. 实现类:
  3. AbstractList , ArrayList , LinkedList , Vector
  4. AbstractSequentialList , AttributeList , CopyOnWriteArrayList , RoleList , RoleUnresolvedList , Stack

ArrayList (数组结构,不同步的,为了提高效率), LinkedList(链接列表结构,就像链子一样,不同步的) , Vector(可以实现可增长的对象数组,可变化,同步的)

ArrayList

  1. // 简书作者:达叔小生
  2. ArrayList为数组结构,长度可以改变
  3. java.util
  4. ArrayList<E>
  5. java.lang.Object
  6. -> java.util.AbstractCollection<E>
  7. -> java.util.AbstractList<E>
  8. -> java.util.ArrayList<E>

知道的实现接口:

Serializable,Cloneable,Iterable<E>,Collection<E>,List<E>,RandomAccess

知道的子类:

AttributeList, RoleList, RoleUnresolvedList

  1. // 简书作者:达叔小生
  2. public class ArrayList<E> extends AbstractList<E>
  3. implements List<E>, RandomAccess, Cloneable, Serializable

LinkedList 可以用于实现堆栈,队列(栈内存先进后出,队列先进先出)

  1. // 简书作者:达叔小生
  2. java.util
  3. LinkedList<E>
  4. java.lang.Object
  5. -> java.util.AbstractCollection<E>
  6. -> java.util.AbstractList<E>
  7. -> java.util.AbstractSequentialList<E>
  8. -> java.util.LinkedList<E>
  9. public class LinkedList<E>
  10. extends AbstractSequentiaList<E>
  11. implements List<E>, Deque<E>, Cloneable, Serializable

知道的接口:Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, List<E>, Queue<E>

LinkedList 队列

  1. // 简书作者:达叔小生
  2. public class LinkedListDemo{
  3. public static void main(String[] args){
  4. // 创建一个队列对象
  5. Queue queue = new Queue();
  6. // 队列添加元素
  7. queue.add("a");
  8. queue.add("b");
  9. queue.add("c");
  10. while(!queue.isNull){
  11. System.out.println(queue.myGet());
  12. }
  13. }
  14. }

队列

  1. class Queue{
  2. // 封装了一个链表的数据结构
  3. private LinkedList link;
  4. Queue(){
  5. link = new LinkedList();
  6. }
  7. // 功能
  8. public void add(Object obj){
  9. // 内部,使用链表方法
  10. link.addFirst(obj);
  11. }
  12. // 先进先出
  13. public Object myGet(){
  14. return link.removeList();
  15. }
  16. // 判断队列中的元素是否为空
  17. public boolean isNull(){
  18. return link.isEmpty();
  19. }
  20. }

堆栈,手枪弹夹,队列,排队买票

  1. // 去除重复元素
  2. public static void getSingleElement(List list){
  3. // 临时容器
  4. List temp = new ArrayList();
  5. // 原容器
  6. for(Iterator it = list.iterator(); it.hasNext(); ){
  7. // 遍历原对象元素
  8. Object obj = it.next();
  9. if(temp.contains(obj)){
  10. // 判断是否存在
  11. temp.add(obj);
  12. }
  13. }
  14. list.clear();
  15. list.addAll(temp);
  16. }
  1. // 简书作者:达叔小生
  2. public class ArrayListDemo{
  3. public static void main(String[] args){
  4. List list = new ArrayList();
  5. list.add("a");
  6. list.add("b");
  7. list.add("c");
  8. System.out.println(list);
  9. }
  10. }
  1. // 简书作者:达叔小生
  2. public boolean equals(Object obj){
  3. if(this == obj){
  4. return true;
  5. }
  6. if(!(obj instanceof Student)){
  7. throw new ClassCastException();
  8. }
  9. Student stu = (Student) obj;
  10. return this.name.equals(stu.name) && this.age == stu.age;
  11. }
  1. // 简书作者:达叔小生
  2. public boolean contains(Object o){
  3. return indexOf(o) >= 0;
  4. }
  1. // 简书作者:达叔小生
  2. public int indexOf(Object o){
  3. if(o == null){
  4. for(int i = 0; i<size; i++){
  5. if(elementData[i] == null){
  6. return i;
  7. }
  8. }
  9. }else{
  10. for( int i = 0; i<size; i++){
  11. if(o.equals(elementData[i])){
  12. return i;
  13. }
  14. }
  15. }
  16. return -1;
  17. }
  1. // 简书作者:达叔小生
  2. List
  3. -> Vector
  4. -> ArrayList
  5. -> LinkedList

接口集合框架-Set接口

API-set

  1. java.util
  2. 接口 Set<E>
  3. 参数E:此set所维护元素的类型
  1. 超级接口
  2. Collection<E>,Iterable<E>
  3. 知道的子接口
  4. NavigableSet<E>,SortedSet<E>
  5. 知道实现类
  6. AbstractSetConcurrentSkipListSetCopyOnWriteArraySetEnumSetHashSet
  7. JobStateReasonsLinkedHashSetTreeSet

HashSet查询效率很高,它的子类(儿子)LinkedHashSet,可以迭代顺序的set接口的哈希表和链接列表的实现。

  1. public class LinkedHashSetDemo{
  2. public static void main(String[] args){
  3. Set set = new LinkedHashSet();
  4. set.add("a");
  5. set.add("b");
  6. set.add("c");
  7. for(Iterator it = set.iterator(); it.hesNext();){
  8. System.out.println(it.next());
  9. }
  10. }
  11. }
  1. public interface Set<E>
  2. extends Collection<E>

Set为一个不包含重复的集合,

Set的一些方法:

方法 说明
add(E e) 返回类型为boolean,该方法用来添加元素
addAll(Collection<? extends g> c) 返回的是boolean类型,该方法是用来添加所有元素到set中的
clear() 返回void类型,是用来移除set中的所有元素
contains(Object o) 返回boolean类型,该方法是指定set中是否包含该元素,如果有则返回true,否则就为false
containsAll(Collection<?> c) 返回boolean类型,如果在set中有包含所有指定的collection元素,就返回true,否则返回false
equals(Object o) 返回类型为boolean,用来比较指定对象与此set的相等性
hashCode() 返回的类型为Int,返回set的哈希码值
isEmpty() 返回的是int类型,返回set不包含元素,则返回true
iterator() 返回的是Iterator<E>类型,返回在此set中的元素上进行迭代的迭代器。
remove(Object o) 返回boolean类型,如果set中存在指定的元素,就将其移除
removeAll(Collection<?> c) 返回boolean类型,移除set中那些包含在指定collection中的元素
retainAll(Collection<?> c) 返回boolean类型,仅保留set中那些包含在指定collection中的元素
size() 返回Int类型,返回set中的元素数
toArray() 返回一个包含set中所有元素的数组
toArray([] a) 返回一个包含set中所有元素的数组,返回数组的运行时类型是指定数组的类型。
  1. public class SetDemo{
  2. public static void main(String[] args){
  3. Set set = new HashSet();
  4. set.add("a");
  5. set.add("b");
  6. set.add("c");
  7. // set.add(new Student("a",12));
  8. // set.add(new Student("b",13));
  9. // set.add(new Student("c",14));
  10. for(Iterator it = set.iterator(); it.hasNext(); ){
  11. Object object = (Object) it.next();
  12. System.out.println(it.next();
  13. }
  14. }
  15. }
  1. Set
  2. -> HashSet
  3. -> TreeSet

HashSet<E>

  1. java.lang.Object
  2. -> java.util.AbstractCollection<E>
  3. -> java.util.AbstractSet<E>
  4. -> java.util.HashSet<E>
  1. HashSet<E>
  2. 知道已实现的接口:
  3. Serializable,Cloneable,Iterable<E>,Collection<E>,Set<E>
  4. 知道的子类:
  5. JobStateReasons,LinkedHashSet
  1. public class HashSet<E>
  2. extends AbstractSet<E>
  3. implements Set<E>,Cloneable,Serializable

HashSet该类实现了Set的接口,数组中存储的是元素,哈希值对应关系,所以叫哈希表或叫散列,查询速度快。有重复元素,用不了哈希表,即不可以包含重复的元素,不保证顺序,方法有hasCode()equals()方法。

方法 说明
hashCode() 返回的是Ine类型,返回该对象的哈希值
  1. // 简书作者:达叔小生
  2. public int hashCode(){
  3. return 1;
  4. }
  5. public boolean equals(Object obj){
  6. if(this == obj)
  7. return true;
  8. if(obj == null)
  9. return false;
  10. if(getClass() != obj.getClass())
  11. return false;
  12. if(age != other.age)
  13. return false;
  14. if(name == null){
  15. if(other.name != null)
  16. return false;
  17. }else if(!name.equals(other.name))
  18. return false;
  19. return true;
  20. }
  21. }

TreeSet<E>,可以进行排序set集合中的元素,比较结果为0,视为相同元素不存。

案例

  1. // 简书作者:达叔小生
  2. public class TreeSetDemo{
  3. public static void main(String[] args){
  4. Set set = new TreeSet(new ComparatorLength() );
  5. set.add("a");
  6. set.add("b");
  7. set.add("c");
  8. for(Iterator it = set.iterator();it.hasNext(); ){
  9. System.out.println(it.next());
  10. }
  11. }
  12. }
  1. // 简书作者:达叔小生
  2. public class ComparatorLength implements Comparator{
  3. public int compare(Object o1,Object o2){
  4. // 比较字符串,强转
  5. String s1=(String)o1;
  6. String s2=(String)o2;
  7. int temp = s1.length() - s2.length();
  8. return temp == 0? s1.compareTo(s2) : temp;
  9. }
  10. }
  1. // 简书作者:达叔小生
  2. public class TreeSet<E>
  3. extends AbstractSet<E>
  4. implements NavigableSet<E>,Cloneable,Serialirable
  1. // 简书作者:达叔小生
  2. java.lang
  3. 接口 Comparable<T>
  4. 参数为可以与对象进行比较
  1. // 定义一个类实现Comparator
  2. public class ComparatorName implements Comparator{
  3. public int compare(Object o1,Object o2){
  4. Student s1 = (Student)o1;
  5. Student s2 = (Student)o2;
  6. int temp = s1.getName().compareTo(s2.getName());
  7. return temp==0? s1.getAge()-s2.getAge() : temp;
  8. }
  9. }

已知的那些子接口:

Delayed,Name,RunnableScheduledFuture<V>,ScheduleFuture<V>

方法:实现comparable接口,可以排序的功能

方法 说明
compreTo(T o) 返回类型为Int,是用来比较对象与指定对象的顺序
  1. // 简书作者:达叔小生
  2. public int compareTo(Object o){
  3. if(!(o instanceof Student)){
  4. throw new ClassCastException();
  5. }
  6. Student stu = (Student) o;
  7. if(this.age>stu.age)
  8. return 1;
  9. if(this.age<stu.age)
  10. return -1;
  11. return 0;
  12. }
  1. // 简书作者:达叔小生
  2. public class TreeSetDemo{
  3. public static void main(String[] args){
  4. // Set set = new TreeSet();
  5. TreeSet set = new TreeSet();
  6. set.add("a");
  7. set.add("b");
  8. set.add("c");
  9. for(Iterator it = set.iterator(); it.hasNext(); ){
  10. System.out.println(it.next());
  11. }
  12. }
  13. }
  1. // 源码
  2. public boolean add(E e){
  3. return m.put(e, PRESENT)==null;
  4. }

构造方法:

方法 说明
TreeSet() 无参构造方法,该set根据其元素的自然顺序进行排序
TreeSet(Collection<? extend E> e) 构造一个包含指定collection元素的新TreeSet,它按照其元素的自然顺序进行排序
TreeSet(Comparator<? super E> comparator) 构造一个新的空TreeSet,它根据指定比较器进行顺序
TreeSet(SortedSet s) 构造一个与指定有序set具有相同映射关系和相同排序的新TreeSet

二叉树结构

二叉树结构把小的放在左边,大的放在右边。

for each 循环

  1. // 简书作者:达叔小生
  2. public class ForeachDemo{
  3. public static void main(String[] args){
  4. List list = new ArrayList();
  5. list.add("1");
  6. list.add("2");
  7. list.add("3");
  8. for(Object str : list){
  9. System.out.println(obj);
  10. }
  11. }
  12. }

枚举,一枚一枚的举出了来

方法 说明
hasMoreElements() 返回的是booleam类型,测试枚举是否包含更多的元素
nextElement() 如果该枚举对象至少还有一个可提供的元素,就返回此枚举,取出下一个元素
  1. // 简书作者:达叔小生
  2. public class EnumerationDemo{
  3. public static void main(String[] args)}
  4. Vector v = new Vector();
  5. v.addElement("a");
  6. v.addElement("b");
  7. v.addElement("c");
  8. for(Enumeration e = v.elements(); e.hasMoreElements();){
  9. System.out.println(e.nextElement());
  10. }
  11. // 不考虑,先考虑Iterator
  12. for(Object obj : v){
  13. System.out.println(obj);
  14. }
  15. }
  16. }

集合:

List -> ArrayList(数组,查询快),LinkedList(链表,增删快)

Set -> HashSet(哈希表,查询快,表对应唯一)

TreeSet(二叉树,就知道排序的,有规则)

往后余生,唯独有你

简书作者:达叔小生

90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通

简书博客: https://www.jianshu.com/u/c785ece603d1

结语

  • 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
  • 小礼物走一走 or 点赞

第49节:Java集合框架中底层文档的List与Set的更多相关文章

  1. Java集合框架中底层文档的List与Set

    Java集合框架中的List与Set // 简书作者:达叔小生 Collection -> Set 无序不重复 -> 无序HashSet,需要排序TreeSet -> List 有序 ...

  2. Java集合框架中的快速失败(fail—fast)机制

      fail-fast机制,即快速失败机制,是java集合框架中的一种错误检测机制.多线程下用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除),则会抛出Concurre ...

  3. Java集合框架中Map接口的使用

    在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...

  4. Java集合框架中List接口的简单使用

    Java集合框架可以简单的理解为一种放置对象的容器,和数学中的集合概念类似,Java中的集合可以存放一系列对象的引用,也可以看做是数组的提升,Java集合类是一种工具类,只有相同类型的对象引用才可以放 ...

  5. Java集合框架中的元素

    之前有一篇笔记,讲的是集合和泛型,这几天看Java集合中几个接口的文档,思绪非常混乱,直到看到Oracle的“The Collections Framwork”的页面,条理才清晰些,现在进行整理. 一 ...

  6. Java中的函数式编程(五)Java集合框架中的高阶函数

    写在前面 随着Java 8引入了函数式接口和lambda表达式,Java 8中的集合框架(Java Collections Framework, JCF)也增加相应的接口以适应函数式编程.   本文的 ...

  7. java集合框架中contains(),containsKey()和containsValue()的用法:

    List集合的contains()方法用于判断集合中包不包含某个元素,返回值是boolean. Map集合的containsKey()和containsValue()方法和上面的相同. 示例: pub ...

  8. java集合框架中Set和List的区别

    1. Set 接口实例存储的是无序的,不重复的数据.List 接口实例存储的是有序的,可以重复的元素. 2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有Ha ...

  9. java集合框架中的去重问题

    对于自定义的类来说,必须要重写hashcode和equals方法 hashcode方法的作用是确定元素在数据结构中的位置,当两个元素的hash值一样时,需要用equals方法判断两个元素是否是一样的, ...

随机推荐

  1. JavaScript获取扫码枪相关资料

    https://blog.csdn.net/jiongxian1/article/details/78906124 https://blog.csdn.net/jifengdalu/article/d ...

  2. C语言编写程序计算圆上的点的坐标

    Problem Description There is a cycle with its center on the origin. Now give you a point on the cycl ...

  3. HYSBZ 2743 (树状数组) 采花

    题目:这里 题意: 在2016年,佳媛姐姐刚刚学习了树,非常开心.现在他想解决这样一个问题:给定一颗有根树(根为1),有以下 两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记, ...

  4. Centos 安装 android sdk(转)

    原文地址: https://blog.csdn.net/kai_1215/article/details/80731099 这个后面有个指令没有运行起来,我做了一些修改: 原文:sdkmanager ...

  5. GUI学习之二——PyQt控件初识

    一.控件概念 控件是一个程序界面上的各个独立的元素, 它具备用户点击.接收用户输入.展示不同内容.存放其他控件等功能. 二.控件分类 常用的控件按功能可以分为以下几种类 按钮 QPushButton— ...

  6. delphi中 panel如何在Form实现鼠标移动拖放

    Panel的MouseDown事件 移动就写上ReleaseCapture;SendMessage(Panel1.Handle,wm_SysCommand,$F012,0); 改变大小就写上Relea ...

  7. Spring+MVC Controller层接收App端请求的中文参数乱码问题。

    在正文之前,说明下Filter的作用: 过滤器顾名思义就是进行过滤的,可以实现代码的定向执行和预处理.通俗点说法filter相当于加油站,request是条路,response是条路,目的地是serv ...

  8. JavaSE编程题

    Test1–取出一个字符串中字母出现的次数.如:字符串:”abcdekka27qoq”,输出格式为:a(2)b(1)k(2)… Test2–假如我们在开发一个系统时需要对员工进行建模,[员工]包含3个 ...

  9. idea运行固定多个模块项目

    第一步:配置workspace.xml 在.idea文件夹下,搜索RunDashboard位置 <component name="RunDashboard"> < ...

  10. 阿里云远程连接CentOS

    1.购买一个CentOS的ECS服务器: 2.修改安全组,开放SSH/22的端口号: 这里是22/22为SSH连接的端口号:3389为远程桌面的默认端口号 3.利用xshell或者SecureCRT连 ...