繁体   English   中英

C#列表实现…在Java中

[英]C# List implementation… in Java

我正在学习Java,并且正在尝试用Java在C#中做过的事情。

目标是将类“ MyItem”包装到“ MyItems”列表中。 这使得推理起来更容易( MyItemsList<MyItem>更容易阅读/理解...或者说,我需要使其变得更复杂,例如IEnumerable<KeyValuePair<string,List<Dictionary<int,bool>>>> ...然后请求MyKVPDictionaries而不是List<IEnumberaable<KeyValuePair<...>>>>> )。

只是环顾四周……似乎C#允许您保留东西的默认实现(看下面的.Add才有效)。

看一下Java ...有没有一种方法可以实现用c#完成的列表? 还是我必须手动实现列表的各个部分? (.add,.list,.contains等)。

下面,我在C#中实现了Class ...的“基本”实现和List<Class>

在Java中实现class MyItems implements List<MyItem>真的需要做更多的工作,还是我缺少简化流程的内容?

(Java代码只是带有通过IntelliJ的Resharper“自动实施缺少的成员”存根的MyItems.java类文件)。

C#版本.NetFiddle

using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {       
        var myItems = new MyItems();
        myItems.Add(new MyItem("Hello"));
        myItems.Add(new MyItem(" "));
        myItems.Add(new MyItem("World"));
        myItems.Add(new MyItem("!"));

        foreach(var item in myItems)
            Console.Write(item.Name);
    }
}

public class MyItems : List<MyItem>
{

}

public class MyItem
{
    public MyItem(string name)
    {
        Name = name;
    }
    public string Name { get; private set; }
}

Java版本开始/存根:

package items;

import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class MyItems implements List<MyItem> {
    @Override
    public int size() {
        return 0;
    }

    @Override
    public boolean isEmpty() {
        return false;
    }

    @Override
    public boolean contains(Object o) {
        return false;
    }

    @Override
    public Iterator<MyItem> iterator() {
        return null;
    }

    @Override
    public Object[] toArray() {
        return new Object[0];
    }

    @Override
    public <T> T[] toArray(T[] a) {
        return null;
    }

    @Override
    public boolean add(MyItem generatePreSignedUrl) {
        return false;
    }

    @Override
    public boolean remove(Object o) {
        return false;
    }

    @Override
    public boolean containsAll(Collection<?> c) {
        return false;
    }

    @Override
    public boolean addAll(Collection<? extends MyItem> c) {
        return false;
    }

    @Override
    public boolean addAll(int index, Collection<? extends MyItem> c) {
        return false;
    }

    @Override
    public boolean removeAll(Collection<?> c) {
        return false;
    }

    @Override
    public boolean retainAll(Collection<?> c) {
        return false;
    }

    @Override
    public void clear() {

    }

    @Override
    public MyItem get(int index) {
        return null;
    }

    @Override
    public MyItem set(int index, MyItem element) {
        return null;
    }

    @Override
    public void add(int index, MyItem element) {

    }

    @Override
    public MyItem remove(int index) {
        return null;
    }

    @Override
    public int indexOf(Object o) {
        return 0;
    }

    @Override
    public int lastIndexOf(Object o) {
        return 0;
    }

    @Override
    public ListIterator<MyItem> listIterator() {
        return null;
    }

    @Override
    public ListIterator<MyItem> listIterator(int index) {
        return null;
    }

    @Override
    public List<MyItem> subList(int fromIndex, int toIndex) {
        return null;
    }
}

Java的List类型是一个接口,与C#的IList 如果要实现它,则必须从头开始编写大多数方法。 与C#具体的List类相对应的是Java的ArrayList

public class MyItems extends ArrayList<MyItem> {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM