精华内容
下载资源
问答
  • java的集合类型主要3种:set(集)、list(列表)和map(映射)。1、List(有序、可重复) (推荐学习:java课程)List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度...

    add428f41c000fd50b4618d7805a97cf.png

    java的集合类型主要有3种:set(集)、list(列表)和map(映射)。

    1、List(有序、可重复) (推荐学习:java课程)

    List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢。

    2、Set(无序、不能重复)

    Set里存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单地把对象加入集合中。

    3、Map(键值对、键唯一、值不唯一)

    Map集合中存储的是键值对,键不能重复,值可以重复。根据键得到值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值。

    d889dbddc8063c111c4cd7e800cf421b.png

    集合类的特点有三个:

    第一点,集合类这种框架是高性能的。对基本类集(动态数组,链接表,树和散列表)的实现是高效率的。一般人很少去改动这些已经很成熟并且高效的APl;

    第二点,集合类允许不同类型的集合以相同的方式和高度互操作方式工作;

    第三点,集合类容易扩展和修改,程序员可以很容易地稍加改造就能满足自己的数据结构需求。

    展开全文
  • java提升专栏里面更多的文章和资料想学习更多东西的朋友关注一下哦!!!java提升​zhuanlan.zhihu.com同步容器。它的原理是将状态封装起来,并对每个公有方法都实行同步,使得每次只有1个线程能够访问容器的状态...

    java提升专栏里面有更多的文章和资料想学习更多东西的朋友关注一下哦!!!

    java提升zhuanlan.zhihu.com
    8af88c1b60677a0a4413ef9699fcbb6b.png

    同步容器。它的原理是将状态封装起来,并对每个公有方法都实行同步,使得每次只有1个线程能够访问容器的状态。

      • Vector和HashTable
      • Collections.synchronizedXXX方法

    同步容器的问题

    • 这种方式使得对容器的访问都串行化,严重降低了并发性,如果多个线程来竞争容器的锁时,吞吐量严重降低
    • 对容器的多个方法的复合操作,是线程不安全的,比如一个线程负责删除,另一个线程负责查询,有可能出现越界的异常

    并发容器。java.util.concurrent包里面的一系列实现

      • Concurrent开头系列。以ConcurrentHashMap为例,它的实现原理为分段锁。默认情况下有16个,每个锁守护1/16的散列数据,这样保证了并发量能达到16

    分段锁缺陷在于虽然一般情况下只要一个锁,但是遇到需要扩容等类似的事情,只能去获取所有的锁


    ConcurrentHashMap一些问题

    需要对整个容器中的内容进行计算的方法,比如size、isEmpty、contains等等。由于并发的存在,在计算的过程中可能已进过期了,它实际上就是个估计值,但是在并发的场景下,需要使用的场景是很少的。 以ConcurrentHashMap的size方法为例:

    /**
    

    不能提供线程独占的功能

    CopyOnWrite系列。以CopyOnWriteArrayList为例,只在每次修改的时候,进行加锁控制,修改会创建并重新发布一个新的容器副本,其它时候由于都是事实上不可变的,也就不会出现线程安全问题

    CopyOnWrite的问题


    每次修改都复制底层数组,存在开销,因此使用场景一般是迭代操作远多于修改操作

    CopyOnWriteArrayList的读写示例

    /**
       * Appends the specified element to the end of this list.
        *
       * @param e element to be appended to this list
      * @return <tt>true</tt> (as specified by {@link Collection#add})
     */
    public boolean add(E e) {
           final ReentrantLock lock = this.lock;
          lock.lock();
         try {
            Object[] elements = getArray();
           int len = elements.length;
          Object[] newElements = Arrays.copyOf(elements, len + 1);
         newElements[len] = e;
        setArray(newElements);
       return true;
    } finally {
      lock.unlock();
    }
    }
           /**
          * {@inheritDoc}
         *
         * @throws IndexOutOfBoundsException {@inheritDoc}
         */
        public E get(int index) {
            return get(getArray(), index);
        }
        /**
       * Gets the array.  Non-private so as to also be accessible
       * from CopyOnWriteArraySet class.
       */
        final Object[] getArray() {
           return array;
        }
        private E get(Object[] a, int index) {
            return (E) a[index];
         }

    java中的同步工具类

    阻塞队列,BlockingQueue。它提供了put和take方法,在队列不满足各自条件时将产生阻塞BlockingQueue使用示例,生产者-消费者

    public static void main(String[] args) throws Exception {
           BlockingQueue queue = new ArrayBlockingQueue(1024);
           Producer producer = new Producer(queue);
           Consumer consumer = new Consumer(queue);
           new Thread(producer).start();
           new Thread(consumer).start();
       }
    }
    public class Producer implements Runnable{
       protected BlockingQueue queue = null;
    
       public Producer(BlockingQueue queue) {
           this.queue = queue;
       }
       
       public void run() {
           try {
               queue.put("1");
               Thread.sleep(1000);
               queue.put("2");
               Thread.sleep(2000);
               queue.put("3");
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
       }
    }
    public class Consumer implements Runnable{
       
       protected BlockingQueue queue = null;
       
       public Consumer(BlockingQueue queue) {
           this.queue = queue;
       }
       
       public void run() {
           try {
               System.out.println(queue.take());
               System.out.println("Wait 1 sec");
               System.out.println(queue.take());
               System.out.println("Wait 2 sec");
               System.out.println(queue.take());
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
       }
    }

    输出为

    1
    Wait 1 sec
    2
    Wait 2 sec
    3

    闭锁

      • CountDownLatch。使多个线程等待一组事件发生,它包含一个计数器,表示需要等待的事件的数量,每发生一个事,就递减一次,当减为0时,所有事情发生,允许“通行”

    CountDownLatch示例:

    public class TestHarness{
       public long timeTasks(int nThreads,final Runnable task) throws InterruptedException {
       final CountDownLatch startGate = new CountDownLatch(1);
       final CountDownLatch endGate = new CountDownLatch(nThreads);
       for (int i=0;i<nThreads;i++){
           Thread t = new Thread(){
               public void run(){
                   try {
                       startGate.await();
                       try {
                           task.run();
                       }finally {
                           endGate.countDown();
                       }
                   } catch (InterruptedException e) {
                       e.printStackTrace();
                   }
               }
           };
           t.start();
       }
       long start = System.nanoTime();
       startGate.countDown();
       endGate.await();
       long end=System.nanoTime();
       return end-start;
       }
    }

    启动门使主线程能够同时释放所有的工作线程,结束门使得主线程能够等待最后一个线程执行完
    - FutureTask。Future.get的如果任务执行完成,则立即返回,否则将阻塞直到任务完结,再返回结果或者是抛出异常

    信号量,Semaphore 。它管理着一组虚拟的许可,许可的数量可通过构造函数指定,在执行操作时首先获得许可,并在使用后释放许可,如果没有,那么accquire将阻塞直到有许可。Semaphore示例

    public class BoundedHashSet<T>{
       private final Set<T> set;
       private final Semaphore sem;
    
       public BoundedHashSet(int bound) {
           this.set = Collections.synchronizedSet(new HashSet<T>());
           this.sem = new Semaphore(bound);
       }
       public boolean add(T o) throws InterruptedException {
           sem.acquire();
           boolean wasAdded = false;
           try {
               wasAdded = set.add(o);
              return wasAdded;
           }finally {
               if (!wasAdded){
                   sem.release();
               }
           }
       }
       public boolean remove(Object o){
           boolean wasRemoved = set.remove(o);
           if(wasRemoved){
              sem.release();
           }
           return wasRemoved;
               
       }
    }

    栅栏。它能阻塞一组线程直到某个事件发生。与闭锁的区别:

      • 所有线程必须同时到达栅栏位置,才能继续执行。闭锁用于等待事件,而栅栏用于等待其它线程。
      • 闭锁一旦进入终止状态,就不能被重置,它是一次性对象,而栅栏可以重置
      • CyclicBarrier。可以使一定数量的参与方反复地在栅栏位置汇集

    CyclicBarrier使用示例

    public static void main(String[] args) {
    //第k步执行完才能执行第k+1步
           CyclicBarrier barrier = new CyclicBarrier(3,new StageKPlusOne());
           StageK[] stageKs = new StageK[3];
           for (int i=0;i<3;i++){
               stageKs[i] = new StageK(barrier,"k part "+(i+1));
           }
           for (int i=0;i<3;i++){
               new Thread(stageKs[i]).start();
           }
    }    
    class StageKPlusOne implements Runnable{
       @Override
       public void run() {
           System.out.println("stage k over");
           System.out.println("stage k+1 start counting");
       }
    }
    class StageK implements Runnable{
       private CyclicBarrier barrier;
       private String stage;
       
       public StageK(CyclicBarrier barrier, String stage) {
           this.barrier = barrier;
           this.stage = stage;
       }
       
       @Override
       public void run() {
           System.out.println("stage "+stage+" counting...");
           try {
               TimeUnit.MILLISECONDS.sleep(500);
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
           System.out.println("stage "+stage+" count over");
           try {
               barrier.await();
           } catch (InterruptedException e) {
               e.printStackTrace();
           } catch (BrokenBarrierException e) {
               e.printStackTrace();
           }
       }
    }

    输出为

    stage k part 1 counting...
    stage k part 3 counting...
    stage k part 2 counting...
    stage k part 2 count over
    stage k part 3 count over
    stage k part 1 count over
    stage k over
    stage k+1 start counting
    

    Exchanger。它是一种两方栅栏,各方在栅栏位置交换数据Exchanger 使用示例:

    public static void main(String[] args) {
           Exchanger exchanger = new Exchanger();
            ExchangerRunnable er1 = new ExchangerRunnable(exchanger,"1");
            ExchangerRunnable er2 = new ExchangerRunnable(exchanger,"2");
            new Thread(er1).start();
            new Thread(er2).start();
        
        }
        class ExchangerRunnable implements Runnable{
        
        private Exchanger e;
        private Object o;
    
        public ExchangerRunnable(Exchanger e, Object o) {
           this.e = e;
            this.o = o;
    }
       
        @Override
        public void run() {
           Object pre=o;
            try {
                o=e.exchange(o);
                System.out.println("pre:"+pre+" now:"+o);
            } catch (InterruptedException e1) {
                e1.printStackTrace();
            }
        }
    }

    输出如下

    pre:1 now:2
    pre:2 now:1

    如果大家喜欢这篇文章可以点一下关注

    java提升专栏里面有更多的文章和资料想学习更多东西的朋友关注一下哦!!!

    java提升zhuanlan.zhihu.com
    8af88c1b60677a0a4413ef9699fcbb6b.png
    展开全文
  • 每天都分享,完全是免费订阅,请放心关注注:本文转载自网络,不代表本平台立场,仅供读者参考,著作权属归原创者所有。陕西省的国内名牌大学不少,拥有3所“985”高校和8所“211”高校,数量上排在全国第5,在...

    阅读本文前,请您先点击上面的蓝色字体,再点击“关注”,这样您就可以继续免费收到文章了。每天都有分享,完全是免费订阅,请放心关注

    注:本文转载自网络,不代表本平台立场,仅供读者参考,著作权属归原创者所有。

    陕西省的国内名牌大学不少,拥有3所“985”高校和8所“211”高校,数量上排在全国第5,在学校的综合实力上,陕西省拥有6所“国内百强高校”。所以说,陕西省的高等教育水平在国内来讲是非常不错。

    de9f8ca4edac797ce36076f0db0ac23e.png

    在2019年,陕西省一共有34所公办高校在本科进行了招生。其中有22所院校是在本科一批招生,有11所院校是在本科二批招生,西安音乐学院的录取比较特殊就不在介绍了。

    34所公办本科院校的名单如下:

    f6e9900b6b0a5b2863e2ddb4f48ce67c.png

    22所在2019年本科一批进行招生的院校具体名单如下:

    549cb64bbfba149d06011a6ab88bcca6.png

    11所在2019年本科二批进行招生的院校具体名单如下:

    ca6fb337f1082a4326ca153e3be1d412.png

    在这34所院校中,哪些高校的录取分数高,哪些高校的录取分数低,哪些“性价比”高,这些都是考生非常关心的问题,接下来,我们来看一看这34所高校在2019年的具体录取分数情况,使考生有个大概的心理准备。

    我们先来看本科一批进行招生的院校的录取分数排名情况,按照文科录取分数从高到低的排名如下表所示:

    eb9e52cc292b9e1cfab9409315fe3957.png

    按照理科录取分数从高到低的排名如下表所示:

    e7c91f888bdc2c2c10a26a5553a50fe4.png

    西安交通大学和西北工业大学作为国内非常著名的大学,又是“985”高校,录取分数排在前两位,理所当然。陕西省还有一所“985”高校-西北农林科技大学的录取分数排名却非常让人意外,只排在了第7、8名。比同省的“211”高校的录取分数还低好多,这可能与学校的专业有关系,现在的农学专业、林学专业不是太受考生欢迎,再一个就是学校的地理位置不占优势,学校在陕西杨凌而不是西安。不过,学校毕竟是“985”高校,这么低的录取分数,非常适合考生“捡漏”。

    西北政法大学是另一所引人关注的高校,学校在理科录取分数排名在第10位,文科录取分数第8 位,这是一所只有硕士学位授予权的院校,但是,学校的录取分数排名却不低,文科录取分数排名在“双非”院校中是第一位,比省内一些拥有“博士学位授予权”的院校录取分数还要高。西北政法大学是国内培养政法人才的高等院校,是国内著名的法学界“五院四系”之一,名声在外,并且毕业生就职单位好。不过,西北政法大学在“五院”中是发展最慢的一个,到现在是“五院”中唯一一个没有获得博士学位授予权的院校。

    331d41c9929db6d3ea96c466ba80964a.png

    西安邮电大学属于当下的热门院校,该校是以信息技术为特色的院校,非常受考生青睐,所以,即使学校的实力不是太高,但是它的录取分数却不低,文理科的录取分数排名都是第10位,而学校的实力也就在省内高校中的15位左右,并且,该校还没有获得博士学位授予权,在档次上也差一级。在全国第四轮学科评估结果中,学校最好的学科信息与通信工程学科只获得B-。

    在整个录取分数排名中,文理科排名变化最大的是西安医学院,文科录取分数排名是最后一位,理科录取分数排名第15 名,虽说排名都不是太高,但是还是提醒考生在报考该校的时候,理科生的竞争力压力要大一些。

    西安外国语大学和西安理工大学的文理科录取分数的变化也比较大,从录取分数排名来看,西安外国语大学更受文科考生青睐,西安理工大学更受理科考生欢迎。

    延安大学、陕西中医药大学和陕西理工大学是排名最后的3所院校,陕西理工大学是2019年才开始在一批招生,录取分数低容易理解;延安大学录取分数低一个是实力不强,再有就是地理位置不太好。陕西中医药大学是最让人失望的一所院校,该校的历史非常辉煌,早在1978年就被确定为全国8所重点建设的中医院校之一,在1981年就成为全国首批硕士学位授予单位,到现在呢?依然没有获得博士学位授予权,只从这点上就能感觉该校的发展不是太好,也难怪考生都不愿意报考。

    c403aa1fdfc1121c1843ee3179a15311.png

    再来看看陕西本科二批的录取分数排名情况,前面说过,在本科二批录取的院校有11所,具体的录取分数按照文科录取分数从高到低排名如下表

    4395bb23adaf6e58227ee7489a7e0d94.png

    按照理科录取分数从高到低排名如下表

    0f2b91c531c89e0939bf921d828baf5a.png

    宝鸡文理学院和西安体育学院是二批录取院校中仅有的具有硕士学位授予权的院校,宝鸡文理学院的实力在二批录取院校中是最高的,只是由于学校位于宝鸡市,而西安文理学院位于西安市,才导致宝鸡文理学院的录取分数比不过西安文理学院。

    通过对录取分数的排名。可以很清楚的知道一所高校的实力强弱,也能知道学校在考生尤其是本地考生心里的位置。这样选择学校的话,更靠谱一些。

    如果读者需要更多的高校的信息,记得关注我。

    展开全文
  • 展开全部1、 JAVA语法和基础62616964757a686964616fe59b9ee7ad9431333365643561,包括循环和类的相关内容,如实现,继承。2、你需要掌握几个重点的集合,List接口的两个子类LinkedList,ArrayList,然后是Map几口的...

    展开全部

    1、 JAVA语法和基础62616964757a686964616fe59b9ee7ad9431333365643561,包括循环和类的相关内容,如实现,继承。

    2、你需要掌握几个重点的集合,List接口的两个子类LinkedList,ArrayList,然后是Map几口的两个子类HashMap,HashTable,Set接口 掌握List后学Set就容易了,掌握Collection和Collections的区别。

    3、重点掌握Connection,PreparedStatement, Statement,ResultSet,其他的可以在学习或项目中如果碰到再学,但早期重点掌握前面几个,其他了解足够,数据库建议新手用MySql,下载Navicat for MySQL管理工具。

    4、HTML+JAVASCRIPT不必说了,掌握多少看自己把握了,CSS做了解。

    5、JSP+Servlet,你需要重点掌握几个,Request,Response,Session,其次是Application.

    6、另外你需要知道Redirect,ForWard的区别,Servlet的生命周期等。标签方面:(1)掌握EL表达式;(2)最好掌握JSTL标签,不会也可,但如果掌握了JSP标签,学JSTL也十分简单,重点是迭代标签和格式化标签。

    7、学习AJAX,简单点就行了,无需深入研究,掌握了上面的,你可以继续学习框架:Struts2.0;Hibernate3;Spring 2.0。

    展开全文
  • 不多说,直接上干货!https://www.nowcoder.com/ta/review-java/review?tpId=31&tqId=21086&query=&asc=true&order=&...其中List和Set接口继承了Collection接口,一个是有序...
  • Collection:代表一组对象,每一个对象都是它的子元素。 Set:不包含重复元素的Collection。...List顺序的collection,并且可以包含重复元素。 Map:可以把键(key)映射到值(value)的对象,键不能重复。 ...
  • java集合主要有哪些

    2017-11-27 17:50:00
    一:集合的父接口:Collection ...三、Collection集合,里面都什么方法: 四、通过List创建集合 五、遍历集合的三种方法 六、通过List迭代器进行正序与倒序进行迭代循环 ...
  • 展开全部集合类型主要3种:set(集)、list(列表)和map(映射)。1、List(有序、可重复)List里存放的e5a48de588b662616964757a686964616f31333366306431对象是有序的,同时也是可以重复的,List关注的是索引,拥有一...
  • Java的集合类型有哪些

    2019-09-03 23:29:45
    List里存放的对象是有序的,可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢。 Set(无序、不能...
  • 3. spring 有哪些主要模块?Spring框架至今已集成了20多个模块。这些模块主要被分如下图所示的核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。4. 说一下 runnable 和 callable 有什么...
  • Java 集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口:...List:顺序的 collection,并且可以包含重复元素。 Map:可以把键(key)映射到值(value)的对象,键不能重复。 ...
  • 集合类接口指定了一组叫做元素的对象。集合类接口的每一种具体的实现类都可以以他自己的方式对元素进行保存和排序。的集合允许重复的键,有些不允许... List顺序的collection,并且可以包含重复元素。  Ma...
  • 集合类是放在java.util.*;这个包。集合类存放的都是对象的引用,而非...集合类型主要3种:set(集)、list(列表)、map(映射)和Queue(队列)。//队列为jdk5中的加上的(1)Set集(set)是最简单的一种集合,它的对象...
  • JAVA list集合

    2017-12-11 18:16:00
    为什么需要集合?集合与数组有什么区别?答:数组是一个线性的序列,所以它可以快速的访问其他...--------------------------------------------Java中集合有哪些?答:List,包含Vector、ArrayList,LinkedListSet...
  • ListJava 开发中经常会使用的集合,你们知道有哪些方式可以初始化一个 List 吗?这其中不缺乏一些坑,今天栈长我给大家一一普及一下。如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis...
  • ListJava 开发中经常会使用的集合,你们知道有哪些方式可以初始化一个 List 吗?这其中不缺乏一些坑,今天栈长我给大家一一普及一下。 如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,...
  • 很多时候我们都会想知道,一...首先我们要知道java里定义了哪些类型。java的类型都实现了java.lang.reflect.Type的接口, 主要五类:raw types, parameterized types, array types, type variables and primitive...
  • 很多时候我们都会想知道,一个...首先我们要知道java里定义了哪些类型。java的类型都实现了java.lang.reflect.Type的接口,主要五类:raw types, parameterized types, array types, type variables and primitive...
  • Java集合22题ArrayList 和 Vector 的区别。说说 ArrayList,Vector, LinkedList 的存储性能和特性。快速失败 (fail-fast) 和安全失败 (fail-safe) 的...List、Map、Set 三个接口,存取元素时,各什么特点?Set ...
  • Java集合22题ArrayList 和 Vector 的区别。说说 ArrayList,Vector, LinkedList 的存储性能和特性。快速失败 (fail-fast) 和安全失败 (fail-safe) 的...List、Map、Set 三个接口,存取元素时,各什么特点?Set ...
  • Java 关于List接口中的replaceAll() 方法

    千次阅读 2019-06-23 23:49:48
    今天博主在查看List接口中什么哪些方法时,发现了一个特殊的方法replaceAll()方法。 为什么说它特殊呢,因为它传入的参数我是第一次见过,如下 defaultvoidreplaceAll(UnaryOperator<E>operator) 对于该...
  • 如何取得java泛型的类型

    千次阅读 2008-04-10 17:50:00
    很多时候我们都会想知道,一个泛型里...首先我们要知道java里定义了哪些类型。java的类型都实现了java.lang.reflect.Type的接口, 主要五类:raw types, parameterized types, array types, type variables and pri
  • 集合体系里面有哪些类1. Collection接口2. 列表List接口,有序集合3. Set集合接口4. Map集合接口5. ArrayList实现类,实现了List接口6. LinkedList实现类, 实现了List接口7. HashSet集合类,实现了Set接口8. ...
  • 随着高考成绩的公布,志愿填报成为考生和家长最为关心的问题,尤其是山东、北京、天津、海南等地第一年落地新高考,志愿填报也将实行新的方式,都有哪些新变化,应该注意什么,一起来看一下。目前,全国共有北京、...
  • 常用对象List-使用集合实现登录注册功能(单独案例) ...如果第一件事情想的是怎么去实现登录功能和注册功能,这样...A:有哪些类 B:类里面又有些什么? C:类和类之间的关系又是什么? 分析: A:有哪些类 用户类 测试类 B:类...
  • Redis基础数据结构有哪些?一、String(字符串)在任何一种编程语言,字符串String都是最基础的数据结构, 那你有想过Redis中存储一个字符串都进行了哪些操作嘛?在Redis中String是可以修改的,称为动态字符串...
  • 38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...
  • 3. spring有哪些主要模块?Spring框架至今已集成了20多个模块。这些模块主要被分如下图所示的核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。4.说一下 runnable 和 callable 有什么区别...
  • Java Queue 专题

    2019-09-23 17:59:03
    Queue是一种很常见的数据结构类型,在java里面Queue是一个接口,它只是定义了一个基本的Queue应该有哪些功能规约。 (Java中的集合包括三大类,它们是Set、List和Map,它们都处于java.util包中,Set、List和Map都是...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 155
精华内容 62
关键字:

java里有哪些list

java 订阅