<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>@java_fillthegaps</title><generator>teletype.in</generator><description><![CDATA[@java_fillthegaps]]></description><image><url>https://teletype.in/files/0a/f2/0af204a1-8d55-47fa-b6ca-fc1e361f21ed.jpeg</url><title>@java_fillthegaps</title><link>https://teletype.in/@java_fillthegaps</link></image><link>https://teletype.in/@java_fillthegaps?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=java_fillthegaps</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/java_fillthegaps?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/java_fillthegaps?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Fri, 10 Apr 2026 14:57:15 GMT</pubDate><lastBuildDate>Fri, 10 Apr 2026 14:57:15 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@java_fillthegaps/QN39vs6K0</guid><link>https://teletype.in/@java_fillthegaps/QN39vs6K0?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=java_fillthegaps</link><comments>https://teletype.in/@java_fillthegaps/QN39vs6K0?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=java_fillthegaps#comments</comments><dc:creator>java_fillthegaps</dc:creator><title>Вопросы собеседований: методы интерфейса List (Java 10)</title><pubDate>Sun, 04 Oct 2020 11:41:55 GMT</pubDate><description><![CDATA[<img src="https://telegra.ph/file/958613bd054cae1638f61.png"></img>Какой код при вставке в указанную область напечатает в консоли:]]></description><content:encoded><![CDATA[
  <figure class="m_column">
    <img src="https://telegra.ph/file/958613bd054cae1638f61.png" width="1701" />
  </figure>
  <p>Какой код при вставке в указанную область напечатает в консоли:</p>
  <blockquote>Latest version 15 on 6.10.2020</blockquote>
  <p></p>
  <p> Варианты ответов:</p>
  <figure class="m_column">
    <img src="https://telegra.ph/file/a6f3d5fcd63b73094e0c3.png" width="752" />
  </figure>
  <p>В общем, нам нужен такой код, который допускает изменение текущих элементов и добавление новых.</p>
  <pre>A. List.of(&quot;Latest&quot;, &quot;version&quot;, &quot;14&quot;);</pre>
  <p>Создаёт неизменяемый список, в котором методы <em>add, set, remove</em> бросают <em>UnsupportedOperationException</em>.</p>
  <p>Этот вариант не подойдёт.</p>
  <p></p>
  <pre>B. String[] array = {...};
   List&lt;String&gt; list = new ArrayList(array);</pre>
  <p>У <em>ArrayList </em>и <em>LinkedList </em>нет конструктора, принимающего массив.</p>
  <p>Результат — ошибка компиляции.</p>
  <p></p>
  <pre>C. String[] array = {...};
   List&lt;String&gt; list = Arrays.asList(array);
</pre>
  <p>Здесь создаётся структура, известная как Array backed list: элементы хранятся как массив, но используются методы интерфейса <em>List</em>.</p>
  <p>У массива размер задаётся при создании и не может меняться. Операции <em>add, remove, clear </em>выбросят <em>UnsupportedOperationException</em>.</p>
  <p>Менять можно только существующие элементы: методы <em>set, replaceAll, sort</em>.</p>
  <p>Этот вариант тоже мимо.</p>
  <p></p>
  <pre>D. List&lt;String&gt; arrList = new ArrayList&lt;&gt;() {{...}};
   List&lt;String&gt; list = List.copyOf(arrList);</pre>
  <p>Метод из java 10 <em>copyOf </em>даёт неизменяемую копию переданного списка. Если входная коллекция и так неизменяемая, возвращается она же. <br /></p>
  <p>Методы <em>add, set</em> и остальные бросают <em>UnsupportedOperationException</em>.<br /></p>
  <p><strong>Итого:</strong></p>
  <p>Везде используется интерфейс <em>List</em>, но по факту данные хранятся в массиве. Некоторые варианты позволяют обновлять существующие элементы, но добавлять и удалять элементы нельзя. Поэтому правильный ответ — F: ни один вариант не подойдёт. </p>
  <p></p>
  <hr />
  <p><em>Лирическое отступление: тренды и дизайн методов</em></p>
  <p>Когда я первый раз увидела конструкцию</p>
  <pre>List.of(&quot;1&quot;, &quot;2&quot;);</pre>
  <p>то подумала, что это краткая форма записи обычного изменяемого списка:</p>
  <pre>List&lt;String&gt; list = new ArrayList&lt;&gt;();
list.add(&quot;1&quot;);
list.add(&quot;2&quot;);</pre>
  <p>Это логично, потому что java - ООП язык. Объекты представляют реальный мир и меняют свойства в зависимости от действий и условий.</p>
  <p>Но сейчас идёт тренд на функциональный стиль: на первом плане не взаимодействие объектов, а обработка данных. Их нужно беречь и держать неизменными, это прослеживается во многих новых фичах: Stream API, Records и другие.</p>
  <p>И в новых методах интерфейса <em>List </em>неизменяемость тоже в приоритете♥️</p>

]]></content:encoded></item></channel></rss>